{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<h1>2b. Machine Learning using tf.estimator </h1>\n",
    "\n",
    "In this notebook, we will create a machine learning model using tf.estimator and evaluate its performance.  The dataset is rather small (7700 samples), so we can do it all in-memory.  We will also simply pass the raw data in as-is. "
   ]
  },
  {
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
 "!sudo chown -R jupyter:jupyter /home/jupyter/training-data-analyst"
   ]
  },
  {

"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
 "# Ensure the right version of Tensorflow is installed.\n",
 "!pip freeze | grep tensorflow==2.6"
 ]
},
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2.6.0\n"
     ]
    }
   ],
   "source": [
    "import tensorflow as tf\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "import shutil\n",
    "\n",
    "print(tf.__version__)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Read data created in the previous chapter."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "# In CSV, label is the first column, after the features, followed by the key\n",
    "CSV_COLUMNS = ['fare_amount', 'pickuplon','pickuplat','dropofflon','dropofflat','passengers', 'key']\n",
    "FEATURES = CSV_COLUMNS[1:len(CSV_COLUMNS) - 1]\n",
    "LABEL = CSV_COLUMNS[0]\n",
    "\n",
    "df_train = pd.read_csv('./taxi-train.csv', header = None, names = CSV_COLUMNS)\n",
    "df_valid = pd.read_csv('./taxi-valid.csv', header = None, names = CSV_COLUMNS)\n",
    "df_test = pd.read_csv('./taxi-test.csv', header = None, names = CSV_COLUMNS)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<h2> Train and eval input functions to read from Pandas Dataframe </h2>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "def make_train_input_fn(df, num_epochs):\n",
    "  return tf.compat.v1.estimator.inputs.pandas_input_fn(\n",
    "    x = df,\n",
    "    y = df[LABEL],\n",
    "    batch_size = 128,\n",
    "    num_epochs = num_epochs,\n",
    "    shuffle = True,\n",
    "    queue_capacity = 1000\n",
    "  )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "def make_eval_input_fn(df):\n",
    "  return tf.compat.v1.estimator.inputs.pandas_input_fn(\n",
    "    x = df,\n",
    "    y = df[LABEL],\n",
    "    batch_size = 128,\n",
    "    shuffle = False,\n",
    "    queue_capacity = 1000\n",
    "  )"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Our input function for predictions is the same except we don't provide a label"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "def make_prediction_input_fn(df):\n",
    "  return tf.compat.v1.estimator.inputs.pandas_input_fn(\n",
    "    x = df,\n",
    "    y = None,\n",
    "    batch_size = 128,\n",
    "    shuffle = False,\n",
    "    queue_capacity = 1000\n",
    "  )"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Create feature columns for estimator"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "def make_feature_cols():\n",
    "  input_columns = [tf.feature_column.numeric_column(k) for k in FEATURES]\n",
    "  return input_columns"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<h3> Linear Regression with tf.Estimator framework </h3>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "INFO:tensorflow:Using default config.\n",
      "INFO:tensorflow:Using config: {'_experimental_distribute': None, '_session_config': allow_soft_placement: true\n",
      "graph_options {\n",
      "  rewrite_options {\n",
      "    meta_optimizer_iterations: ONE\n",
      "  }\n",
      "}\n",
      ", '_global_id_in_cluster': 0, '_tf_random_seed': None, '_service': None, '_num_ps_replicas': 0, '_evaluation_master': '', '_log_step_count_steps': 100, '_save_checkpoints_steps': None, '_task_id': 0, '_device_fn': None, '_cluster_spec': <tensorflow.python.training.server_lib.ClusterSpec object at 0x7f1621c9b240>, '_eval_distribute': None, '_keep_checkpoint_max': 5, '_master': '', '_keep_checkpoint_every_n_hours': 10000, '_save_summary_steps': 100, '_protocol': None, '_task_type': 'worker', '_is_chief': True, '_save_checkpoints_secs': 600, '_model_dir': 'taxi_trained', '_num_worker_replicas': 1, '_train_distribute': None}\n",
      "WARNING:tensorflow:From /usr/local/lib/python3.5/dist-packages/tensorflow/python/framework/op_def_library.py:263: colocate_with (from tensorflow.python.framework.ops) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Colocations handled automatically by placer.\n",
      "WARNING:tensorflow:From /usr/local/lib/python3.5/dist-packages/tensorflow_estimator/python/estimator/inputs/queues/feeding_queue_runner.py:62: QueueRunner.__init__ (from tensorflow.python.training.queue_runner_impl) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "To construct input pipelines, use the `tf.data` module.\n",
      "WARNING:tensorflow:From /usr/local/lib/python3.5/dist-packages/tensorflow_estimator/python/estimator/inputs/queues/feeding_functions.py:500: add_queue_runner (from tensorflow.python.training.queue_runner_impl) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "To construct input pipelines, use the `tf.data` module.\n",
      "INFO:tensorflow:Calling model_fn.\n",
      "WARNING:tensorflow:From /usr/local/lib/python3.5/dist-packages/tensorflow/python/feature_column/feature_column_v2.py:2703: to_float (from tensorflow.python.ops.math_ops) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Use tf.cast instead.\n",
      "INFO:tensorflow:Done calling model_fn.\n",
      "INFO:tensorflow:Create CheckpointSaverHook.\n",
      "INFO:tensorflow:Graph was finalized.\n",
      "INFO:tensorflow:Running local_init_op.\n",
      "INFO:tensorflow:Done running local_init_op.\n",
      "WARNING:tensorflow:From /usr/local/lib/python3.5/dist-packages/tensorflow/python/training/monitored_session.py:809: start_queue_runners (from tensorflow.python.training.queue_runner_impl) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "To construct input pipelines, use the `tf.data` module.\n",
      "INFO:tensorflow:Saving checkpoints for 0 into taxi_trained/model.ckpt.\n",
      "INFO:tensorflow:loss = 24785.195, step = 1\n",
      "INFO:tensorflow:global_step/sec: 162.472\n",
      "INFO:tensorflow:loss = 10496.74, step = 101 (0.621 sec)\n",
      "INFO:tensorflow:global_step/sec: 271.305\n",
      "INFO:tensorflow:loss = 11549.643, step = 201 (0.367 sec)\n",
      "INFO:tensorflow:global_step/sec: 290.197\n",
      "INFO:tensorflow:loss = 21385.969, step = 301 (0.344 sec)\n",
      "INFO:tensorflow:global_step/sec: 285.312\n",
      "INFO:tensorflow:loss = 12134.15, step = 401 (0.351 sec)\n",
      "INFO:tensorflow:global_step/sec: 282.254\n",
      "INFO:tensorflow:loss = 10723.378, step = 501 (0.355 sec)\n",
      "INFO:tensorflow:global_step/sec: 238.179\n",
      "INFO:tensorflow:loss = 15577.61, step = 601 (0.417 sec)\n",
      "INFO:tensorflow:Saving checkpoints for 608 into taxi_trained/model.ckpt.\n",
      "INFO:tensorflow:Loss for final step: 143.04446.\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<tensorflow_estimator.python.estimator.canned.linear.LinearRegressor at 0x7f15f3efff98>"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tf.compat.v1.logging.set_verbosity(tf.compat.v1.logging.INFO)\n",
    "\n",
    "OUTDIR = 'taxi_trained'\n",
    "shutil.rmtree(OUTDIR, ignore_errors = True) # start fresh each time\n",
    "\n",
    "model = tf.estimator.LinearRegressor(\n",
    "      feature_columns = make_feature_cols(), model_dir = OUTDIR)\n",
    "\n",
    "model.train(input_fn = make_train_input_fn(df_train, num_epochs = 10))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Evaluate on the validation data (we should defer using the test data to after we have selected a final model)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "INFO:tensorflow:Calling model_fn.\n",
      "INFO:tensorflow:Done calling model_fn.\n",
      "INFO:tensorflow:Starting evaluation at 2019-07-01T20:21:23Z\n",
      "INFO:tensorflow:Graph was finalized.\n",
      "WARNING:tensorflow:From /usr/local/lib/python3.5/dist-packages/tensorflow/python/training/saver.py:1266: checkpoint_exists (from tensorflow.python.training.checkpoint_management) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Use standard file APIs to check for files with this prefix.\n",
      "INFO:tensorflow:Restoring parameters from taxi_trained/model.ckpt-608\n",
      "INFO:tensorflow:Running local_init_op.\n",
      "INFO:tensorflow:Done running local_init_op.\n",
      "INFO:tensorflow:Finished evaluation at 2019-07-01-20:21:23\n",
      "INFO:tensorflow:Saving dict for global step 608: average_loss = 109.50432, global_step = 608, label/mean = 11.666427, loss = 13023.192, prediction/mean = 10.842143\n",
      "INFO:tensorflow:Saving 'checkpoint_path' summary for global step 608: taxi_trained/model.ckpt-608\n",
      "RMSE on dataset = 10.464430809020996\n"
     ]
    }
   ],
   "source": [
    "def print_rmse(model, df):\n",
    "  metrics = model.evaluate(input_fn = make_eval_input_fn(df))\n",
    "  print('RMSE on dataset = {}'.format(np.sqrt(metrics['average_loss'])))\n",
    "print_rmse(model, df_valid)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This is nowhere near our benchmark (RMSE of $6 or so on this data), but it serves to demonstrate what TensorFlow code looks like.  Let's use this model for prediction."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "INFO:tensorflow:Calling model_fn.\n",
      "INFO:tensorflow:Done calling model_fn.\n",
      "INFO:tensorflow:Graph was finalized.\n",
      "INFO:tensorflow:Restoring parameters from taxi_trained/model.ckpt-608\n",
      "INFO:tensorflow:Running local_init_op.\n",
      "INFO:tensorflow:Done running local_init_op.\n",
      "{'predictions': array([10.795108], dtype=float32)}\n",
      "{'predictions': array([10.792586], dtype=float32)}\n",
      "{'predictions': array([10.79344], dtype=float32)}\n",
      "{'predictions': array([10.791017], dtype=float32)}\n",
      "{'predictions': array([10.79485], dtype=float32)}\n",
      "{'predictions': array([10.794632], dtype=float32)}\n",
      "{'predictions': array([10.793227], dtype=float32)}\n",
      "{'predictions': array([10.793259], dtype=float32)}\n",
      "{'predictions': array([10.795003], dtype=float32)}\n",
      "{'predictions': array([10.792877], dtype=float32)}\n",
      "{'predictions': array([10.79511], dtype=float32)}\n",
      "{'predictions': array([10.795273], dtype=float32)}\n",
      "{'predictions': array([10.788619], dtype=float32)}\n",
      "{'predictions': array([10.792499], dtype=float32)}\n",
      "{'predictions': array([10.862182], dtype=float32)}\n",
      "{'predictions': array([10.793302], dtype=float32)}\n",
      "{'predictions': array([10.794137], dtype=float32)}\n",
      "{'predictions': array([10.863196], dtype=float32)}\n",
      "{'predictions': array([10.79446], dtype=float32)}\n",
      "{'predictions': array([10.791657], dtype=float32)}\n",
      "{'predictions': array([10.79289], dtype=float32)}\n",
      "{'predictions': array([10.788843], dtype=float32)}\n",
      "{'predictions': array([10.793038], dtype=float32)}\n",
      "{'predictions': array([10.864346], dtype=float32)}\n",
      "{'predictions': array([10.795702], dtype=float32)}\n",
      "{'predictions': array([10.7856], dtype=float32)}\n",
      "{'predictions': array([10.928023], dtype=float32)}\n",
      "{'predictions': array([11.13833], dtype=float32)}\n",
      "{'predictions': array([10.796178], dtype=float32)}\n",
      "{'predictions': array([10.797187], dtype=float32)}\n",
      "{'predictions': array([11.070252], dtype=float32)}\n",
      "{'predictions': array([10.791715], dtype=float32)}\n",
      "{'predictions': array([10.792365], dtype=float32)}\n",
      "{'predictions': array([10.795085], dtype=float32)}\n",
      "{'predictions': array([10.93002], dtype=float32)}\n",
      "{'predictions': array([10.794215], dtype=float32)}\n",
      "{'predictions': array([10.792495], dtype=float32)}\n",
      "{'predictions': array([10.788759], dtype=float32)}\n",
      "{'predictions': array([10.999011], dtype=float32)}\n",
      "{'predictions': array([10.789095], dtype=float32)}\n",
      "{'predictions': array([10.793759], dtype=float32)}\n",
      "{'predictions': array([10.791792], dtype=float32)}\n",
      "{'predictions': array([10.791505], dtype=float32)}\n",
      "{'predictions': array([10.791908], dtype=float32)}\n",
      "{'predictions': array([10.861135], dtype=float32)}\n",
      "{'predictions': array([10.79374], dtype=float32)}\n",
      "{'predictions': array([10.859512], dtype=float32)}\n",
      "{'predictions': array([11.066544], dtype=float32)}\n",
      "{'predictions': array([10.794021], dtype=float32)}\n",
      "{'predictions': array([10.792283], dtype=float32)}\n",
      "{'predictions': array([10.796118], dtype=float32)}\n",
      "{'predictions': array([11.067401], dtype=float32)}\n",
      "{'predictions': array([10.792759], dtype=float32)}\n",
      "{'predictions': array([10.793827], dtype=float32)}\n",
      "{'predictions': array([10.792225], dtype=float32)}\n",
      "{'predictions': array([10.793403], dtype=float32)}\n",
      "{'predictions': array([10.792221], dtype=float32)}\n",
      "{'predictions': array([11.070669], dtype=float32)}\n",
      "{'predictions': array([10.792835], dtype=float32)}\n",
      "{'predictions': array([10.85826], dtype=float32)}\n",
      "{'predictions': array([10.795049], dtype=float32)}\n",
      "{'predictions': array([10.932241], dtype=float32)}\n",
      "{'predictions': array([10.792547], dtype=float32)}\n",
      "{'predictions': array([10.793718], dtype=float32)}\n",
      "{'predictions': array([10.929956], dtype=float32)}\n",
      "{'predictions': array([10.7926655], dtype=float32)}\n",
      "{'predictions': array([10.794223], dtype=float32)}\n",
      "{'predictions': array([10.795674], dtype=float32)}\n",
      "{'predictions': array([10.792714], dtype=float32)}\n",
      "{'predictions': array([10.793286], dtype=float32)}\n",
      "{'predictions': array([10.788638], dtype=float32)}\n",
      "{'predictions': array([10.793674], dtype=float32)}\n",
      "{'predictions': array([10.861802], dtype=float32)}\n",
      "{'predictions': array([10.792871], dtype=float32)}\n",
      "{'predictions': array([10.792929], dtype=float32)}\n",
      "{'predictions': array([10.793477], dtype=float32)}\n",
      "{'predictions': array([10.795571], dtype=float32)}\n",
      "{'predictions': array([10.792619], dtype=float32)}\n",
      "{'predictions': array([11.070783], dtype=float32)}\n",
      "{'predictions': array([10.861102], dtype=float32)}\n",
      "{'predictions': array([10.794274], dtype=float32)}\n",
      "{'predictions': array([10.792861], dtype=float32)}\n",
      "{'predictions': array([10.79287], dtype=float32)}\n",
      "{'predictions': array([10.857754], dtype=float32)}\n",
      "{'predictions': array([10.788108], dtype=float32)}\n",
      "{'predictions': array([10.930369], dtype=float32)}\n",
      "{'predictions': array([11.068061], dtype=float32)}\n",
      "{'predictions': array([11.068847], dtype=float32)}\n",
      "{'predictions': array([10.795062], dtype=float32)}\n",
      "{'predictions': array([10.794337], dtype=float32)}\n",
      "{'predictions': array([10.7906275], dtype=float32)}\n",
      "{'predictions': array([10.793935], dtype=float32)}\n",
      "{'predictions': array([11.052205], dtype=float32)}\n",
      "{'predictions': array([10.859996], dtype=float32)}\n",
      "{'predictions': array([10.787695], dtype=float32)}\n",
      "{'predictions': array([10.793274], dtype=float32)}\n",
      "{'predictions': array([10.793712], dtype=float32)}\n",
      "{'predictions': array([11.067685], dtype=float32)}\n",
      "{'predictions': array([10.793203], dtype=float32)}\n",
      "{'predictions': array([10.800755], dtype=float32)}\n",
      "{'predictions': array([10.792137], dtype=float32)}\n",
      "{'predictions': array([10.862256], dtype=float32)}\n",
      "{'predictions': array([10.790132], dtype=float32)}\n",
      "{'predictions': array([10.790778], dtype=float32)}\n",
      "{'predictions': array([10.789232], dtype=float32)}\n",
      "{'predictions': array([10.793741], dtype=float32)}\n",
      "{'predictions': array([11.069238], dtype=float32)}\n",
      "{'predictions': array([10.7909565], dtype=float32)}\n",
      "{'predictions': array([10.931543], dtype=float32)}\n",
      "{'predictions': array([10.794918], dtype=float32)}\n",
      "{'predictions': array([10.793422], dtype=float32)}\n",
      "{'predictions': array([10.792982], dtype=float32)}\n",
      "{'predictions': array([10.793931], dtype=float32)}\n",
      "{'predictions': array([10.795384], dtype=float32)}\n",
      "{'predictions': array([10.794749], dtype=float32)}\n",
      "{'predictions': array([10.791771], dtype=float32)}\n",
      "{'predictions': array([10.793076], dtype=float32)}\n",
      "{'predictions': array([10.794645], dtype=float32)}\n",
      "{'predictions': array([10.794734], dtype=float32)}\n",
      "{'predictions': array([10.792065], dtype=float32)}\n",
      "{'predictions': array([10.793889], dtype=float32)}\n",
      "{'predictions': array([10.863344], dtype=float32)}\n",
      "{'predictions': array([10.930683], dtype=float32)}\n",
      "{'predictions': array([10.793847], dtype=float32)}\n",
      "{'predictions': array([10.79312], dtype=float32)}\n",
      "{'predictions': array([10.793053], dtype=float32)}\n",
      "{'predictions': array([10.79182], dtype=float32)}\n",
      "{'predictions': array([10.793553], dtype=float32)}\n",
      "{'predictions': array([10.794772], dtype=float32)}\n",
      "{'predictions': array([10.791305], dtype=float32)}\n",
      "{'predictions': array([10.79391], dtype=float32)}\n",
      "{'predictions': array([10.791585], dtype=float32)}\n",
      "{'predictions': array([10.791928], dtype=float32)}\n",
      "{'predictions': array([10.793737], dtype=float32)}\n",
      "{'predictions': array([10.7924795], dtype=float32)}\n",
      "{'predictions': array([10.863866], dtype=float32)}\n",
      "{'predictions': array([10.789664], dtype=float32)}\n",
      "{'predictions': array([10.775515], dtype=float32)}\n",
      "{'predictions': array([10.795083], dtype=float32)}\n",
      "{'predictions': array([10.793809], dtype=float32)}\n",
      "{'predictions': array([10.793184], dtype=float32)}\n",
      "{'predictions': array([11.138756], dtype=float32)}\n",
      "{'predictions': array([10.793262], dtype=float32)}\n",
      "{'predictions': array([10.792176], dtype=float32)}\n",
      "{'predictions': array([10.930397], dtype=float32)}\n",
      "{'predictions': array([10.793856], dtype=float32)}\n",
      "{'predictions': array([10.859096], dtype=float32)}\n",
      "{'predictions': array([10.793628], dtype=float32)}\n",
      "{'predictions': array([10.792626], dtype=float32)}\n",
      "{'predictions': array([10.862816], dtype=float32)}\n",
      "{'predictions': array([10.7961035], dtype=float32)}\n",
      "{'predictions': array([10.931086], dtype=float32)}\n",
      "{'predictions': array([10.792266], dtype=float32)}\n",
      "{'predictions': array([10.794184], dtype=float32)}\n",
      "{'predictions': array([10.861005], dtype=float32)}\n",
      "{'predictions': array([10.793769], dtype=float32)}\n",
      "{'predictions': array([10.793315], dtype=float32)}\n",
      "{'predictions': array([10.794328], dtype=float32)}\n",
      "{'predictions': array([11.0685835], dtype=float32)}\n",
      "{'predictions': array([10.792565], dtype=float32)}\n",
      "{'predictions': array([10.792212], dtype=float32)}\n",
      "{'predictions': array([10.861402], dtype=float32)}\n",
      "{'predictions': array([10.794112], dtype=float32)}\n",
      "{'predictions': array([10.793714], dtype=float32)}\n",
      "{'predictions': array([10.79328], dtype=float32)}\n",
      "{'predictions': array([10.793058], dtype=float32)}\n",
      "{'predictions': array([10.792683], dtype=float32)}\n",
      "{'predictions': array([10.795211], dtype=float32)}\n",
      "{'predictions': array([10.863277], dtype=float32)}\n",
      "{'predictions': array([10.79175], dtype=float32)}\n",
      "{'predictions': array([11.069555], dtype=float32)}\n",
      "{'predictions': array([10.863027], dtype=float32)}\n",
      "{'predictions': array([10.79575], dtype=float32)}\n",
      "{'predictions': array([10.792516], dtype=float32)}\n",
      "{'predictions': array([10.790288], dtype=float32)}\n",
      "{'predictions': array([10.793582], dtype=float32)}\n",
      "{'predictions': array([10.862436], dtype=float32)}\n",
      "{'predictions': array([10.793069], dtype=float32)}\n",
      "{'predictions': array([10.932459], dtype=float32)}\n",
      "{'predictions': array([10.793364], dtype=float32)}\n",
      "{'predictions': array([10.795668], dtype=float32)}\n",
      "{'predictions': array([10.792892], dtype=float32)}\n",
      "{'predictions': array([10.794579], dtype=float32)}\n",
      "{'predictions': array([10.795641], dtype=float32)}\n",
      "{'predictions': array([10.9332695], dtype=float32)}\n",
      "{'predictions': array([10.793322], dtype=float32)}\n",
      "{'predictions': array([10.793479], dtype=float32)}\n",
      "{'predictions': array([10.862181], dtype=float32)}\n",
      "{'predictions': array([10.921794], dtype=float32)}\n",
      "{'predictions': array([10.795249], dtype=float32)}\n",
      "{'predictions': array([11.136903], dtype=float32)}\n",
      "{'predictions': array([10.793294], dtype=float32)}\n",
      "{'predictions': array([10.794021], dtype=float32)}\n",
      "{'predictions': array([10.794972], dtype=float32)}\n",
      "{'predictions': array([10.791141], dtype=float32)}\n",
      "{'predictions': array([10.787769], dtype=float32)}\n",
      "{'predictions': array([11.139691], dtype=float32)}\n",
      "{'predictions': array([10.79247], dtype=float32)}\n",
      "{'predictions': array([10.792861], dtype=float32)}\n",
      "{'predictions': array([10.794831], dtype=float32)}\n",
      "{'predictions': array([10.790273], dtype=float32)}\n",
      "{'predictions': array([10.787138], dtype=float32)}\n",
      "{'predictions': array([10.791217], dtype=float32)}\n",
      "{'predictions': array([10.7942505], dtype=float32)}\n",
      "{'predictions': array([10.793277], dtype=float32)}\n",
      "{'predictions': array([10.862903], dtype=float32)}\n",
      "{'predictions': array([10.796315], dtype=float32)}\n",
      "{'predictions': array([10.79265], dtype=float32)}\n",
      "{'predictions': array([10.795578], dtype=float32)}\n",
      "{'predictions': array([10.793147], dtype=float32)}\n",
      "{'predictions': array([11.068918], dtype=float32)}\n",
      "{'predictions': array([10.7933035], dtype=float32)}\n",
      "{'predictions': array([10.793305], dtype=float32)}\n",
      "{'predictions': array([10.793342], dtype=float32)}\n",
      "{'predictions': array([10.788947], dtype=float32)}\n",
      "{'predictions': array([10.794362], dtype=float32)}\n",
      "{'predictions': array([10.793746], dtype=float32)}\n",
      "{'predictions': array([10.793821], dtype=float32)}\n",
      "{'predictions': array([10.792734], dtype=float32)}\n",
      "{'predictions': array([10.791839], dtype=float32)}\n",
      "{'predictions': array([10.792221], dtype=float32)}\n",
      "{'predictions': array([10.793928], dtype=float32)}\n",
      "{'predictions': array([10.794184], dtype=float32)}\n",
      "{'predictions': array([10.794913], dtype=float32)}\n",
      "{'predictions': array([10.792555], dtype=float32)}\n",
      "{'predictions': array([10.793583], dtype=float32)}\n",
      "{'predictions': array([10.796328], dtype=float32)}\n",
      "{'predictions': array([10.80668], dtype=float32)}\n",
      "{'predictions': array([10.861422], dtype=float32)}\n",
      "{'predictions': array([11.0667715], dtype=float32)}\n",
      "{'predictions': array([10.791722], dtype=float32)}\n",
      "{'predictions': array([10.793838], dtype=float32)}\n",
      "{'predictions': array([11.069907], dtype=float32)}\n",
      "{'predictions': array([10.792132], dtype=float32)}\n",
      "{'predictions': array([10.794314], dtype=float32)}\n",
      "{'predictions': array([10.8619995], dtype=float32)}\n",
      "{'predictions': array([10.862749], dtype=float32)}\n",
      "{'predictions': array([10.929713], dtype=float32)}\n",
      "{'predictions': array([10.793277], dtype=float32)}\n",
      "{'predictions': array([11.069343], dtype=float32)}\n",
      "{'predictions': array([10.792312], dtype=float32)}\n",
      "{'predictions': array([10.930369], dtype=float32)}\n",
      "{'predictions': array([10.788048], dtype=float32)}\n",
      "{'predictions': array([10.785462], dtype=float32)}\n",
      "{'predictions': array([10.790902], dtype=float32)}\n",
      "{'predictions': array([10.792533], dtype=float32)}\n",
      "{'predictions': array([10.775344], dtype=float32)}\n",
      "{'predictions': array([10.792799], dtype=float32)}\n",
      "{'predictions': array([10.778608], dtype=float32)}\n",
      "{'predictions': array([10.861444], dtype=float32)}\n",
      "{'predictions': array([10.794967], dtype=float32)}\n",
      "{'predictions': array([10.7944565], dtype=float32)}\n",
      "{'predictions': array([10.862934], dtype=float32)}\n",
      "{'predictions': array([10.857103], dtype=float32)}\n",
      "{'predictions': array([10.863891], dtype=float32)}\n",
      "{'predictions': array([10.791638], dtype=float32)}\n",
      "{'predictions': array([10.788767], dtype=float32)}\n",
      "{'predictions': array([10.931125], dtype=float32)}\n",
      "{'predictions': array([10.791354], dtype=float32)}\n",
      "{'predictions': array([10.794772], dtype=float32)}\n",
      "{'predictions': array([10.793983], dtype=float32)}\n",
      "{'predictions': array([10.863077], dtype=float32)}\n",
      "{'predictions': array([10.930896], dtype=float32)}\n",
      "{'predictions': array([10.793431], dtype=float32)}\n",
      "{'predictions': array([11.001122], dtype=float32)}\n",
      "{'predictions': array([10.86061], dtype=float32)}\n",
      "{'predictions': array([10.793655], dtype=float32)}\n",
      "{'predictions': array([10.790594], dtype=float32)}\n",
      "{'predictions': array([10.779669], dtype=float32)}\n",
      "{'predictions': array([10.792338], dtype=float32)}\n",
      "{'predictions': array([10.863257], dtype=float32)}\n",
      "{'predictions': array([10.793689], dtype=float32)}\n",
      "{'predictions': array([11.067121], dtype=float32)}\n",
      "{'predictions': array([10.793918], dtype=float32)}\n",
      "{'predictions': array([10.794743], dtype=float32)}\n",
      "{'predictions': array([10.795402], dtype=float32)}\n",
      "{'predictions': array([10.7930155], dtype=float32)}\n",
      "{'predictions': array([10.789823], dtype=float32)}\n",
      "{'predictions': array([10.79312], dtype=float32)}\n",
      "{'predictions': array([10.793195], dtype=float32)}\n",
      "{'predictions': array([10.9338665], dtype=float32)}\n",
      "{'predictions': array([10.788531], dtype=float32)}\n",
      "{'predictions': array([11.000989], dtype=float32)}\n",
      "{'predictions': array([10.792466], dtype=float32)}\n",
      "{'predictions': array([10.794778], dtype=float32)}\n",
      "{'predictions': array([10.791163], dtype=float32)}\n",
      "{'predictions': array([10.861844], dtype=float32)}\n",
      "{'predictions': array([10.793294], dtype=float32)}\n",
      "{'predictions': array([11.136204], dtype=float32)}\n",
      "{'predictions': array([10.792781], dtype=float32)}\n",
      "{'predictions': array([10.7935], dtype=float32)}\n",
      "{'predictions': array([10.792388], dtype=float32)}\n",
      "{'predictions': array([10.862669], dtype=float32)}\n",
      "{'predictions': array([10.796706], dtype=float32)}\n",
      "{'predictions': array([10.864902], dtype=float32)}\n",
      "{'predictions': array([10.862062], dtype=float32)}\n",
      "{'predictions': array([11.067219], dtype=float32)}\n",
      "{'predictions': array([10.916465], dtype=float32)}\n",
      "{'predictions': array([10.794194], dtype=float32)}\n",
      "{'predictions': array([11.000182], dtype=float32)}\n",
      "{'predictions': array([10.862485], dtype=float32)}\n",
      "{'predictions': array([10.862346], dtype=float32)}\n",
      "{'predictions': array([10.791355], dtype=float32)}\n",
      "{'predictions': array([10.794793], dtype=float32)}\n",
      "{'predictions': array([10.793637], dtype=float32)}\n",
      "{'predictions': array([10.931612], dtype=float32)}\n",
      "{'predictions': array([10.863422], dtype=float32)}\n",
      "{'predictions': array([10.779661], dtype=float32)}\n",
      "{'predictions': array([10.796121], dtype=float32)}\n",
      "{'predictions': array([10.793223], dtype=float32)}\n",
      "{'predictions': array([10.792219], dtype=float32)}\n",
      "{'predictions': array([10.794943], dtype=float32)}\n",
      "{'predictions': array([10.794217], dtype=float32)}\n",
      "{'predictions': array([10.861837], dtype=float32)}\n",
      "{'predictions': array([10.930455], dtype=float32)}\n",
      "{'predictions': array([10.792994], dtype=float32)}\n",
      "{'predictions': array([10.793076], dtype=float32)}\n",
      "{'predictions': array([10.794053], dtype=float32)}\n",
      "{'predictions': array([10.794003], dtype=float32)}\n",
      "{'predictions': array([10.931462], dtype=float32)}\n",
      "{'predictions': array([10.790379], dtype=float32)}\n",
      "{'predictions': array([10.793983], dtype=float32)}\n",
      "{'predictions': array([10.931433], dtype=float32)}\n",
      "{'predictions': array([10.792714], dtype=float32)}\n",
      "{'predictions': array([10.793836], dtype=float32)}\n",
      "{'predictions': array([10.917834], dtype=float32)}\n",
      "{'predictions': array([11.064278], dtype=float32)}\n",
      "{'predictions': array([10.736796], dtype=float32)}\n",
      "{'predictions': array([10.779609], dtype=float32)}\n",
      "{'predictions': array([10.7886], dtype=float32)}\n",
      "{'predictions': array([10.792634], dtype=float32)}\n",
      "{'predictions': array([10.7919035], dtype=float32)}\n",
      "{'predictions': array([10.7937975], dtype=float32)}\n",
      "{'predictions': array([10.862801], dtype=float32)}\n",
      "{'predictions': array([10.789152], dtype=float32)}\n",
      "{'predictions': array([10.793292], dtype=float32)}\n",
      "{'predictions': array([10.864527], dtype=float32)}\n",
      "{'predictions': array([11.063759], dtype=float32)}\n",
      "{'predictions': array([11.066937], dtype=float32)}\n",
      "{'predictions': array([10.793597], dtype=float32)}\n",
      "{'predictions': array([10.79398], dtype=float32)}\n",
      "{'predictions': array([10.790636], dtype=float32)}\n",
      "{'predictions': array([10.796481], dtype=float32)}\n",
      "{'predictions': array([10.789251], dtype=float32)}\n",
      "{'predictions': array([10.793247], dtype=float32)}\n",
      "{'predictions': array([10.795404], dtype=float32)}\n",
      "{'predictions': array([10.792789], dtype=float32)}\n",
      "{'predictions': array([10.796684], dtype=float32)}\n",
      "{'predictions': array([10.793405], dtype=float32)}\n",
      "{'predictions': array([10.793797], dtype=float32)}\n",
      "{'predictions': array([10.864181], dtype=float32)}\n",
      "{'predictions': array([10.792796], dtype=float32)}\n",
      "{'predictions': array([10.930562], dtype=float32)}\n",
      "{'predictions': array([10.995929], dtype=float32)}\n",
      "{'predictions': array([10.861676], dtype=float32)}\n",
      "{'predictions': array([10.794408], dtype=float32)}\n",
      "{'predictions': array([10.793683], dtype=float32)}\n",
      "{'predictions': array([10.789193], dtype=float32)}\n",
      "{'predictions': array([10.792182], dtype=float32)}\n",
      "{'predictions': array([10.794938], dtype=float32)}\n",
      "{'predictions': array([10.792637], dtype=float32)}\n",
      "{'predictions': array([10.786683], dtype=float32)}\n",
      "{'predictions': array([10.793288], dtype=float32)}\n",
      "{'predictions': array([10.791552], dtype=float32)}\n",
      "{'predictions': array([10.792866], dtype=float32)}\n",
      "{'predictions': array([10.79516], dtype=float32)}\n",
      "{'predictions': array([10.792733], dtype=float32)}\n",
      "{'predictions': array([11.135126], dtype=float32)}\n",
      "{'predictions': array([10.792654], dtype=float32)}\n",
      "{'predictions': array([10.79279], dtype=float32)}\n",
      "{'predictions': array([11.068282], dtype=float32)}\n",
      "{'predictions': array([10.86252], dtype=float32)}\n",
      "{'predictions': array([10.793305], dtype=float32)}\n",
      "{'predictions': array([10.85692], dtype=float32)}\n",
      "{'predictions': array([10.793576], dtype=float32)}\n",
      "{'predictions': array([10.792095], dtype=float32)}\n",
      "{'predictions': array([10.794203], dtype=float32)}\n",
      "{'predictions': array([10.862155], dtype=float32)}\n",
      "{'predictions': array([10.794945], dtype=float32)}\n",
      "{'predictions': array([10.931368], dtype=float32)}\n",
      "{'predictions': array([10.795722], dtype=float32)}\n",
      "{'predictions': array([10.860669], dtype=float32)}\n",
      "{'predictions': array([10.793271], dtype=float32)}\n",
      "{'predictions': array([10.794314], dtype=float32)}\n",
      "{'predictions': array([10.863194], dtype=float32)}\n",
      "{'predictions': array([10.794478], dtype=float32)}\n",
      "{'predictions': array([10.791437], dtype=float32)}\n",
      "{'predictions': array([10.794108], dtype=float32)}\n",
      "{'predictions': array([10.789917], dtype=float32)}\n",
      "{'predictions': array([10.864783], dtype=float32)}\n",
      "{'predictions': array([10.794604], dtype=float32)}\n",
      "{'predictions': array([10.779398], dtype=float32)}\n",
      "{'predictions': array([10.791747], dtype=float32)}\n",
      "{'predictions': array([10.861528], dtype=float32)}\n",
      "{'predictions': array([11.137874], dtype=float32)}\n",
      "{'predictions': array([10.793148], dtype=float32)}\n",
      "{'predictions': array([10.865385], dtype=float32)}\n",
      "{'predictions': array([10.796009], dtype=float32)}\n",
      "{'predictions': array([10.795005], dtype=float32)}\n",
      "{'predictions': array([10.862558], dtype=float32)}\n",
      "{'predictions': array([10.793478], dtype=float32)}\n",
      "{'predictions': array([10.793029], dtype=float32)}\n",
      "{'predictions': array([10.863103], dtype=float32)}\n",
      "{'predictions': array([10.792522], dtype=float32)}\n",
      "{'predictions': array([10.863459], dtype=float32)}\n",
      "{'predictions': array([10.931097], dtype=float32)}\n",
      "{'predictions': array([10.792666], dtype=float32)}\n",
      "{'predictions': array([10.79231], dtype=float32)}\n",
      "{'predictions': array([10.793325], dtype=float32)}\n",
      "{'predictions': array([10.795621], dtype=float32)}\n",
      "{'predictions': array([10.790628], dtype=float32)}\n",
      "{'predictions': array([10.861403], dtype=float32)}\n",
      "{'predictions': array([10.792557], dtype=float32)}\n",
      "{'predictions': array([11.068725], dtype=float32)}\n",
      "{'predictions': array([10.852892], dtype=float32)}\n",
      "{'predictions': array([10.793504], dtype=float32)}\n",
      "{'predictions': array([10.794817], dtype=float32)}\n",
      "{'predictions': array([10.847798], dtype=float32)}\n",
      "{'predictions': array([10.793268], dtype=float32)}\n",
      "{'predictions': array([10.862846], dtype=float32)}\n",
      "{'predictions': array([10.794278], dtype=float32)}\n",
      "{'predictions': array([10.861737], dtype=float32)}\n",
      "{'predictions': array([10.930722], dtype=float32)}\n",
      "{'predictions': array([10.7939825], dtype=float32)}\n",
      "{'predictions': array([10.788722], dtype=float32)}\n",
      "{'predictions': array([10.791911], dtype=float32)}\n",
      "{'predictions': array([10.929965], dtype=float32)}\n",
      "{'predictions': array([10.929351], dtype=float32)}\n",
      "{'predictions': array([10.795791], dtype=float32)}\n",
      "{'predictions': array([10.8625], dtype=float32)}\n",
      "{'predictions': array([10.863054], dtype=float32)}\n",
      "{'predictions': array([11.002034], dtype=float32)}\n",
      "{'predictions': array([10.861756], dtype=float32)}\n",
      "{'predictions': array([10.789048], dtype=float32)}\n",
      "{'predictions': array([10.7932825], dtype=float32)}\n",
      "{'predictions': array([10.793503], dtype=float32)}\n",
      "{'predictions': array([10.794045], dtype=float32)}\n",
      "{'predictions': array([10.793364], dtype=float32)}\n",
      "{'predictions': array([10.793072], dtype=float32)}\n",
      "{'predictions': array([10.79365], dtype=float32)}\n",
      "{'predictions': array([10.793289], dtype=float32)}\n",
      "{'predictions': array([10.793335], dtype=float32)}\n",
      "{'predictions': array([11.066295], dtype=float32)}\n",
      "{'predictions': array([10.773621], dtype=float32)}\n",
      "{'predictions': array([10.796402], dtype=float32)}\n",
      "{'predictions': array([10.792261], dtype=float32)}\n",
      "{'predictions': array([10.861757], dtype=float32)}\n",
      "{'predictions': array([10.861949], dtype=float32)}\n",
      "{'predictions': array([10.79399], dtype=float32)}\n",
      "{'predictions': array([10.792439], dtype=float32)}\n",
      "{'predictions': array([10.792512], dtype=float32)}\n",
      "{'predictions': array([10.793859], dtype=float32)}\n",
      "{'predictions': array([10.778162], dtype=float32)}\n",
      "{'predictions': array([10.791043], dtype=float32)}\n",
      "{'predictions': array([10.92993], dtype=float32)}\n",
      "{'predictions': array([10.794215], dtype=float32)}\n",
      "{'predictions': array([10.860586], dtype=float32)}\n",
      "{'predictions': array([10.792775], dtype=float32)}\n",
      "{'predictions': array([10.863423], dtype=float32)}\n",
      "{'predictions': array([10.856664], dtype=float32)}\n",
      "{'predictions': array([10.792197], dtype=float32)}\n",
      "{'predictions': array([10.793114], dtype=float32)}\n",
      "{'predictions': array([10.86153], dtype=float32)}\n",
      "{'predictions': array([10.794823], dtype=float32)}\n",
      "{'predictions': array([10.863576], dtype=float32)}\n",
      "{'predictions': array([10.866235], dtype=float32)}\n",
      "{'predictions': array([11.068781], dtype=float32)}\n",
      "{'predictions': array([10.793051], dtype=float32)}\n",
      "{'predictions': array([10.793858], dtype=float32)}\n",
      "{'predictions': array([10.792871], dtype=float32)}\n",
      "{'predictions': array([10.998744], dtype=float32)}\n",
      "{'predictions': array([10.79191], dtype=float32)}\n",
      "{'predictions': array([10.793595], dtype=float32)}\n",
      "{'predictions': array([10.857992], dtype=float32)}\n",
      "{'predictions': array([10.790744], dtype=float32)}\n",
      "{'predictions': array([10.79538], dtype=float32)}\n",
      "{'predictions': array([10.864558], dtype=float32)}\n",
      "{'predictions': array([10.790785], dtype=float32)}\n",
      "{'predictions': array([11.136559], dtype=float32)}\n",
      "{'predictions': array([10.795641], dtype=float32)}\n",
      "{'predictions': array([10.79273], dtype=float32)}\n",
      "{'predictions': array([10.790611], dtype=float32)}\n",
      "{'predictions': array([10.790512], dtype=float32)}\n",
      "{'predictions': array([10.863151], dtype=float32)}\n",
      "{'predictions': array([10.793095], dtype=float32)}\n",
      "{'predictions': array([10.793679], dtype=float32)}\n",
      "{'predictions': array([10.792268], dtype=float32)}\n",
      "{'predictions': array([10.931991], dtype=float32)}\n",
      "{'predictions': array([10.792435], dtype=float32)}\n",
      "{'predictions': array([10.796245], dtype=float32)}\n",
      "{'predictions': array([10.792737], dtype=float32)}\n",
      "{'predictions': array([10.795331], dtype=float32)}\n",
      "{'predictions': array([10.794071], dtype=float32)}\n",
      "{'predictions': array([10.794406], dtype=float32)}\n",
      "{'predictions': array([10.7927685], dtype=float32)}\n",
      "{'predictions': array([11.068457], dtype=float32)}\n",
      "{'predictions': array([10.793431], dtype=float32)}\n",
      "{'predictions': array([10.7930565], dtype=float32)}\n",
      "{'predictions': array([10.794194], dtype=float32)}\n",
      "{'predictions': array([10.792865], dtype=float32)}\n",
      "{'predictions': array([10.7929325], dtype=float32)}\n",
      "{'predictions': array([11.067694], dtype=float32)}\n",
      "{'predictions': array([11.137327], dtype=float32)}\n",
      "{'predictions': array([10.792751], dtype=float32)}\n",
      "{'predictions': array([10.864036], dtype=float32)}\n",
      "{'predictions': array([10.793251], dtype=float32)}\n",
      "{'predictions': array([10.858052], dtype=float32)}\n",
      "{'predictions': array([10.793004], dtype=float32)}\n",
      "{'predictions': array([10.793818], dtype=float32)}\n",
      "{'predictions': array([10.793762], dtype=float32)}\n",
      "{'predictions': array([10.862166], dtype=float32)}\n",
      "{'predictions': array([11.071078], dtype=float32)}\n",
      "{'predictions': array([10.793332], dtype=float32)}\n",
      "{'predictions': array([10.792363], dtype=float32)}\n",
      "{'predictions': array([10.930764], dtype=float32)}\n",
      "{'predictions': array([10.793572], dtype=float32)}\n",
      "{'predictions': array([10.7933], dtype=float32)}\n",
      "{'predictions': array([11.069129], dtype=float32)}\n",
      "{'predictions': array([10.792124], dtype=float32)}\n",
      "{'predictions': array([10.86183], dtype=float32)}\n",
      "{'predictions': array([10.861704], dtype=float32)}\n",
      "{'predictions': array([10.794739], dtype=float32)}\n",
      "{'predictions': array([10.795697], dtype=float32)}\n",
      "{'predictions': array([11.069202], dtype=float32)}\n",
      "{'predictions': array([10.792745], dtype=float32)}\n",
      "{'predictions': array([10.789327], dtype=float32)}\n",
      "{'predictions': array([11.067598], dtype=float32)}\n",
      "{'predictions': array([11.068589], dtype=float32)}\n",
      "{'predictions': array([10.792797], dtype=float32)}\n",
      "{'predictions': array([10.861391], dtype=float32)}\n",
      "{'predictions': array([10.790262], dtype=float32)}\n",
      "{'predictions': array([10.793249], dtype=float32)}\n",
      "{'predictions': array([10.792507], dtype=float32)}\n",
      "{'predictions': array([10.793933], dtype=float32)}\n",
      "{'predictions': array([10.793241], dtype=float32)}\n",
      "{'predictions': array([10.793065], dtype=float32)}\n",
      "{'predictions': array([10.7964525], dtype=float32)}\n",
      "{'predictions': array([10.793103], dtype=float32)}\n",
      "{'predictions': array([10.793308], dtype=float32)}\n",
      "{'predictions': array([10.792588], dtype=float32)}\n",
      "{'predictions': array([10.792349], dtype=float32)}\n",
      "{'predictions': array([10.999775], dtype=float32)}\n",
      "{'predictions': array([10.86192], dtype=float32)}\n",
      "{'predictions': array([11.068258], dtype=float32)}\n",
      "{'predictions': array([10.79313], dtype=float32)}\n",
      "{'predictions': array([10.862779], dtype=float32)}\n",
      "{'predictions': array([10.791718], dtype=float32)}\n",
      "{'predictions': array([10.793166], dtype=float32)}\n",
      "{'predictions': array([10.783417], dtype=float32)}\n",
      "{'predictions': array([10.791554], dtype=float32)}\n",
      "{'predictions': array([10.861664], dtype=float32)}\n",
      "{'predictions': array([10.7935705], dtype=float32)}\n",
      "{'predictions': array([10.79268], dtype=float32)}\n",
      "{'predictions': array([10.795088], dtype=float32)}\n",
      "{'predictions': array([10.862873], dtype=float32)}\n",
      "{'predictions': array([10.794549], dtype=float32)}\n",
      "{'predictions': array([10.79493], dtype=float32)}\n",
      "{'predictions': array([11.065157], dtype=float32)}\n",
      "{'predictions': array([10.8621], dtype=float32)}\n",
      "{'predictions': array([11.069482], dtype=float32)}\n",
      "{'predictions': array([10.792837], dtype=float32)}\n",
      "{'predictions': array([10.933288], dtype=float32)}\n",
      "{'predictions': array([10.793401], dtype=float32)}\n",
      "{'predictions': array([11.067124], dtype=float32)}\n",
      "{'predictions': array([10.793833], dtype=float32)}\n",
      "{'predictions': array([10.7969], dtype=float32)}\n",
      "{'predictions': array([10.793672], dtype=float32)}\n",
      "{'predictions': array([10.791519], dtype=float32)}\n",
      "{'predictions': array([10.790528], dtype=float32)}\n",
      "{'predictions': array([10.792541], dtype=float32)}\n",
      "{'predictions': array([10.7932205], dtype=float32)}\n",
      "{'predictions': array([10.794259], dtype=float32)}\n",
      "{'predictions': array([10.983014], dtype=float32)}\n",
      "{'predictions': array([10.788318], dtype=float32)}\n",
      "{'predictions': array([10.795348], dtype=float32)}\n",
      "{'predictions': array([10.793113], dtype=float32)}\n",
      "{'predictions': array([10.862502], dtype=float32)}\n",
      "{'predictions': array([10.793128], dtype=float32)}\n",
      "{'predictions': array([10.793691], dtype=float32)}\n",
      "{'predictions': array([10.792888], dtype=float32)}\n",
      "{'predictions': array([10.792641], dtype=float32)}\n",
      "{'predictions': array([10.794124], dtype=float32)}\n",
      "{'predictions': array([10.86363], dtype=float32)}\n",
      "{'predictions': array([10.788257], dtype=float32)}\n",
      "{'predictions': array([10.792378], dtype=float32)}\n",
      "{'predictions': array([10.791892], dtype=float32)}\n",
      "{'predictions': array([10.795831], dtype=float32)}\n",
      "{'predictions': array([10.789063], dtype=float32)}\n",
      "{'predictions': array([10.9307165], dtype=float32)}\n",
      "{'predictions': array([10.793324], dtype=float32)}\n",
      "{'predictions': array([10.794145], dtype=float32)}\n",
      "{'predictions': array([10.793657], dtype=float32)}\n",
      "{'predictions': array([10.7944355], dtype=float32)}\n",
      "{'predictions': array([10.863115], dtype=float32)}\n",
      "{'predictions': array([10.792112], dtype=float32)}\n",
      "{'predictions': array([10.794789], dtype=float32)}\n",
      "{'predictions': array([10.793654], dtype=float32)}\n",
      "{'predictions': array([10.794461], dtype=float32)}\n",
      "{'predictions': array([10.792079], dtype=float32)}\n",
      "{'predictions': array([10.794557], dtype=float32)}\n",
      "{'predictions': array([10.929823], dtype=float32)}\n",
      "{'predictions': array([10.793284], dtype=float32)}\n",
      "{'predictions': array([10.793862], dtype=float32)}\n",
      "{'predictions': array([10.795108], dtype=float32)}\n",
      "{'predictions': array([10.794305], dtype=float32)}\n",
      "{'predictions': array([10.792265], dtype=float32)}\n",
      "{'predictions': array([10.790895], dtype=float32)}\n",
      "{'predictions': array([10.794627], dtype=float32)}\n",
      "{'predictions': array([10.794898], dtype=float32)}\n",
      "{'predictions': array([10.793657], dtype=float32)}\n",
      "{'predictions': array([10.79546], dtype=float32)}\n",
      "{'predictions': array([10.789392], dtype=float32)}\n",
      "{'predictions': array([10.863435], dtype=float32)}\n",
      "{'predictions': array([10.793103], dtype=float32)}\n",
      "{'predictions': array([10.794748], dtype=float32)}\n",
      "{'predictions': array([10.862928], dtype=float32)}\n",
      "{'predictions': array([10.861483], dtype=float32)}\n",
      "{'predictions': array([10.794103], dtype=float32)}\n",
      "{'predictions': array([10.790163], dtype=float32)}\n",
      "{'predictions': array([10.860402], dtype=float32)}\n",
      "{'predictions': array([10.792473], dtype=float32)}\n",
      "{'predictions': array([10.792169], dtype=float32)}\n",
      "{'predictions': array([10.926572], dtype=float32)}\n",
      "{'predictions': array([10.863006], dtype=float32)}\n",
      "{'predictions': array([10.792758], dtype=float32)}\n",
      "{'predictions': array([10.793125], dtype=float32)}\n",
      "{'predictions': array([10.862037], dtype=float32)}\n",
      "{'predictions': array([10.861798], dtype=float32)}\n",
      "{'predictions': array([10.79321], dtype=float32)}\n",
      "{'predictions': array([11.068545], dtype=float32)}\n",
      "{'predictions': array([10.796004], dtype=float32)}\n",
      "{'predictions': array([10.793603], dtype=float32)}\n",
      "{'predictions': array([10.794144], dtype=float32)}\n",
      "{'predictions': array([10.794146], dtype=float32)}\n",
      "{'predictions': array([10.793204], dtype=float32)}\n",
      "{'predictions': array([10.793977], dtype=float32)}\n",
      "{'predictions': array([10.793106], dtype=float32)}\n",
      "{'predictions': array([10.793241], dtype=float32)}\n",
      "{'predictions': array([10.793433], dtype=float32)}\n",
      "{'predictions': array([10.794238], dtype=float32)}\n",
      "{'predictions': array([10.861936], dtype=float32)}\n",
      "{'predictions': array([10.79249], dtype=float32)}\n",
      "{'predictions': array([10.792905], dtype=float32)}\n",
      "{'predictions': array([10.792031], dtype=float32)}\n",
      "{'predictions': array([10.792115], dtype=float32)}\n",
      "{'predictions': array([10.8629875], dtype=float32)}\n",
      "{'predictions': array([10.793548], dtype=float32)}\n",
      "{'predictions': array([10.79339], dtype=float32)}\n",
      "{'predictions': array([10.794391], dtype=float32)}\n",
      "{'predictions': array([10.792424], dtype=float32)}\n",
      "{'predictions': array([10.8615675], dtype=float32)}\n",
      "{'predictions': array([11.068878], dtype=float32)}\n",
      "{'predictions': array([10.794271], dtype=float32)}\n",
      "{'predictions': array([10.789247], dtype=float32)}\n",
      "{'predictions': array([10.997844], dtype=float32)}\n",
      "{'predictions': array([10.794538], dtype=float32)}\n",
      "{'predictions': array([10.789481], dtype=float32)}\n",
      "{'predictions': array([11.067672], dtype=float32)}\n",
      "{'predictions': array([11.136113], dtype=float32)}\n",
      "{'predictions': array([10.778586], dtype=float32)}\n",
      "{'predictions': array([10.793056], dtype=float32)}\n",
      "{'predictions': array([10.931083], dtype=float32)}\n",
      "{'predictions': array([10.79284], dtype=float32)}\n",
      "{'predictions': array([10.792569], dtype=float32)}\n",
      "{'predictions': array([10.785589], dtype=float32)}\n",
      "{'predictions': array([10.793472], dtype=float32)}\n",
      "{'predictions': array([10.857968], dtype=float32)}\n",
      "{'predictions': array([10.791526], dtype=float32)}\n",
      "{'predictions': array([10.792603], dtype=float32)}\n",
      "{'predictions': array([10.792425], dtype=float32)}\n",
      "{'predictions': array([10.788976], dtype=float32)}\n",
      "{'predictions': array([10.792928], dtype=float32)}\n",
      "{'predictions': array([10.794028], dtype=float32)}\n",
      "{'predictions': array([10.793454], dtype=float32)}\n",
      "{'predictions': array([10.862005], dtype=float32)}\n",
      "{'predictions': array([11.069753], dtype=float32)}\n",
      "{'predictions': array([10.792897], dtype=float32)}\n",
      "{'predictions': array([10.793132], dtype=float32)}\n",
      "{'predictions': array([11.071103], dtype=float32)}\n",
      "{'predictions': array([10.792926], dtype=float32)}\n",
      "{'predictions': array([11.069612], dtype=float32)}\n",
      "{'predictions': array([10.793544], dtype=float32)}\n",
      "{'predictions': array([10.79247], dtype=float32)}\n",
      "{'predictions': array([11.066972], dtype=float32)}\n",
      "{'predictions': array([11.136699], dtype=float32)}\n",
      "{'predictions': array([10.861012], dtype=float32)}\n",
      "{'predictions': array([11.137858], dtype=float32)}\n",
      "{'predictions': array([10.857294], dtype=float32)}\n",
      "{'predictions': array([10.792709], dtype=float32)}\n",
      "{'predictions': array([10.794251], dtype=float32)}\n",
      "{'predictions': array([10.795646], dtype=float32)}\n",
      "{'predictions': array([10.998459], dtype=float32)}\n",
      "{'predictions': array([11.139675], dtype=float32)}\n",
      "{'predictions': array([11.064209], dtype=float32)}\n",
      "{'predictions': array([10.793825], dtype=float32)}\n",
      "{'predictions': array([10.778907], dtype=float32)}\n",
      "{'predictions': array([10.795022], dtype=float32)}\n",
      "{'predictions': array([11.069174], dtype=float32)}\n",
      "{'predictions': array([10.79061], dtype=float32)}\n",
      "{'predictions': array([11.136995], dtype=float32)}\n",
      "{'predictions': array([10.858804], dtype=float32)}\n",
      "{'predictions': array([10.793591], dtype=float32)}\n",
      "{'predictions': array([10.930523], dtype=float32)}\n",
      "{'predictions': array([11.067575], dtype=float32)}\n",
      "{'predictions': array([10.793616], dtype=float32)}\n",
      "{'predictions': array([10.793042], dtype=float32)}\n",
      "{'predictions': array([10.933945], dtype=float32)}\n",
      "{'predictions': array([10.792966], dtype=float32)}\n",
      "{'predictions': array([10.79187], dtype=float32)}\n",
      "{'predictions': array([10.793999], dtype=float32)}\n",
      "{'predictions': array([10.793481], dtype=float32)}\n",
      "{'predictions': array([10.792902], dtype=float32)}\n",
      "{'predictions': array([10.792383], dtype=float32)}\n",
      "{'predictions': array([10.793687], dtype=float32)}\n",
      "{'predictions': array([10.793265], dtype=float32)}\n",
      "{'predictions': array([10.793903], dtype=float32)}\n",
      "{'predictions': array([10.793405], dtype=float32)}\n",
      "{'predictions': array([10.793185], dtype=float32)}\n",
      "{'predictions': array([10.793167], dtype=float32)}\n",
      "{'predictions': array([10.92968], dtype=float32)}\n",
      "{'predictions': array([10.795856], dtype=float32)}\n",
      "{'predictions': array([10.792534], dtype=float32)}\n",
      "{'predictions': array([10.862025], dtype=float32)}\n",
      "{'predictions': array([10.9975], dtype=float32)}\n",
      "{'predictions': array([10.786974], dtype=float32)}\n",
      "{'predictions': array([10.795672], dtype=float32)}\n",
      "{'predictions': array([10.794913], dtype=float32)}\n",
      "{'predictions': array([11.067718], dtype=float32)}\n",
      "{'predictions': array([10.794387], dtype=float32)}\n",
      "{'predictions': array([10.862454], dtype=float32)}\n",
      "{'predictions': array([10.7949], dtype=float32)}\n",
      "{'predictions': array([10.86295], dtype=float32)}\n",
      "{'predictions': array([10.794799], dtype=float32)}\n",
      "{'predictions': array([11.068317], dtype=float32)}\n",
      "{'predictions': array([10.794627], dtype=float32)}\n",
      "{'predictions': array([10.860429], dtype=float32)}\n",
      "{'predictions': array([11.06766], dtype=float32)}\n",
      "{'predictions': array([10.929587], dtype=float32)}\n",
      "{'predictions': array([10.793517], dtype=float32)}\n",
      "{'predictions': array([10.7940445], dtype=float32)}\n",
      "{'predictions': array([10.789986], dtype=float32)}\n",
      "{'predictions': array([10.7922], dtype=float32)}\n",
      "{'predictions': array([10.860253], dtype=float32)}\n",
      "{'predictions': array([10.857104], dtype=float32)}\n",
      "{'predictions': array([10.793182], dtype=float32)}\n",
      "{'predictions': array([11.138135], dtype=float32)}\n",
      "{'predictions': array([10.792922], dtype=float32)}\n",
      "{'predictions': array([11.13967], dtype=float32)}\n",
      "{'predictions': array([10.860205], dtype=float32)}\n",
      "{'predictions': array([10.792399], dtype=float32)}\n",
      "{'predictions': array([10.7926], dtype=float32)}\n",
      "{'predictions': array([10.860563], dtype=float32)}\n",
      "{'predictions': array([10.779475], dtype=float32)}\n",
      "{'predictions': array([10.791759], dtype=float32)}\n",
      "{'predictions': array([10.860645], dtype=float32)}\n",
      "{'predictions': array([10.794364], dtype=float32)}\n",
      "{'predictions': array([10.795477], dtype=float32)}\n",
      "{'predictions': array([10.792047], dtype=float32)}\n",
      "{'predictions': array([10.792591], dtype=float32)}\n",
      "{'predictions': array([10.792544], dtype=float32)}\n",
      "{'predictions': array([10.791533], dtype=float32)}\n",
      "{'predictions': array([11.067454], dtype=float32)}\n",
      "{'predictions': array([10.862454], dtype=float32)}\n",
      "{'predictions': array([10.793917], dtype=float32)}\n",
      "{'predictions': array([10.7933855], dtype=float32)}\n",
      "{'predictions': array([10.793244], dtype=float32)}\n",
      "{'predictions': array([10.792673], dtype=float32)}\n",
      "{'predictions': array([10.792851], dtype=float32)}\n",
      "{'predictions': array([11.067327], dtype=float32)}\n",
      "{'predictions': array([10.792123], dtype=float32)}\n",
      "{'predictions': array([10.794803], dtype=float32)}\n",
      "{'predictions': array([10.862596], dtype=float32)}\n",
      "{'predictions': array([10.7929945], dtype=float32)}\n",
      "{'predictions': array([10.793306], dtype=float32)}\n",
      "{'predictions': array([10.792357], dtype=float32)}\n",
      "{'predictions': array([10.793122], dtype=float32)}\n",
      "{'predictions': array([10.792875], dtype=float32)}\n",
      "{'predictions': array([10.794842], dtype=float32)}\n",
      "{'predictions': array([10.790775], dtype=float32)}\n",
      "{'predictions': array([10.792964], dtype=float32)}\n",
      "{'predictions': array([11.070581], dtype=float32)}\n",
      "{'predictions': array([10.793133], dtype=float32)}\n",
      "{'predictions': array([10.793028], dtype=float32)}\n",
      "{'predictions': array([10.794009], dtype=float32)}\n",
      "{'predictions': array([10.927661], dtype=float32)}\n",
      "{'predictions': array([10.779841], dtype=float32)}\n",
      "{'predictions': array([11.138085], dtype=float32)}\n",
      "{'predictions': array([10.79265], dtype=float32)}\n",
      "{'predictions': array([10.7946825], dtype=float32)}\n",
      "{'predictions': array([10.791319], dtype=float32)}\n",
      "{'predictions': array([10.788668], dtype=float32)}\n",
      "{'predictions': array([10.792743], dtype=float32)}\n",
      "{'predictions': array([10.865059], dtype=float32)}\n",
      "{'predictions': array([10.861702], dtype=float32)}\n",
      "{'predictions': array([10.786213], dtype=float32)}\n",
      "{'predictions': array([10.792978], dtype=float32)}\n",
      "{'predictions': array([10.793808], dtype=float32)}\n",
      "{'predictions': array([10.793284], dtype=float32)}\n",
      "{'predictions': array([10.861027], dtype=float32)}\n",
      "{'predictions': array([10.788464], dtype=float32)}\n",
      "{'predictions': array([11.1367855], dtype=float32)}\n",
      "{'predictions': array([10.910955], dtype=float32)}\n",
      "{'predictions': array([10.796634], dtype=float32)}\n",
      "{'predictions': array([10.791893], dtype=float32)}\n",
      "{'predictions': array([11.138181], dtype=float32)}\n",
      "{'predictions': array([10.863003], dtype=float32)}\n",
      "{'predictions': array([10.7935095], dtype=float32)}\n",
      "{'predictions': array([10.929949], dtype=float32)}\n",
      "{'predictions': array([10.795684], dtype=float32)}\n",
      "{'predictions': array([10.793351], dtype=float32)}\n",
      "{'predictions': array([10.862078], dtype=float32)}\n",
      "{'predictions': array([10.862252], dtype=float32)}\n",
      "{'predictions': array([10.86293], dtype=float32)}\n",
      "{'predictions': array([10.793025], dtype=float32)}\n",
      "{'predictions': array([10.86194], dtype=float32)}\n",
      "{'predictions': array([10.857149], dtype=float32)}\n",
      "{'predictions': array([10.793814], dtype=float32)}\n",
      "{'predictions': array([10.795724], dtype=float32)}\n",
      "{'predictions': array([10.794416], dtype=float32)}\n",
      "{'predictions': array([10.791415], dtype=float32)}\n",
      "{'predictions': array([10.794713], dtype=float32)}\n",
      "{'predictions': array([10.795477], dtype=float32)}\n",
      "{'predictions': array([10.792463], dtype=float32)}\n",
      "{'predictions': array([11.066407], dtype=float32)}\n",
      "{'predictions': array([10.794074], dtype=float32)}\n",
      "{'predictions': array([10.793804], dtype=float32)}\n",
      "{'predictions': array([10.793878], dtype=float32)}\n",
      "{'predictions': array([10.794779], dtype=float32)}\n",
      "{'predictions': array([10.78992], dtype=float32)}\n",
      "{'predictions': array([10.930956], dtype=float32)}\n",
      "{'predictions': array([10.7940645], dtype=float32)}\n",
      "{'predictions': array([10.863577], dtype=float32)}\n",
      "{'predictions': array([10.788979], dtype=float32)}\n",
      "{'predictions': array([10.862324], dtype=float32)}\n",
      "{'predictions': array([10.792287], dtype=float32)}\n",
      "{'predictions': array([11.053035], dtype=float32)}\n",
      "{'predictions': array([10.794513], dtype=float32)}\n",
      "{'predictions': array([10.786218], dtype=float32)}\n",
      "{'predictions': array([10.793442], dtype=float32)}\n",
      "{'predictions': array([10.792529], dtype=float32)}\n",
      "{'predictions': array([10.862758], dtype=float32)}\n",
      "{'predictions': array([10.793649], dtype=float32)}\n",
      "{'predictions': array([10.793586], dtype=float32)}\n",
      "{'predictions': array([10.788009], dtype=float32)}\n",
      "{'predictions': array([11.001231], dtype=float32)}\n",
      "{'predictions': array([10.794936], dtype=float32)}\n",
      "{'predictions': array([10.793685], dtype=float32)}\n",
      "{'predictions': array([10.793646], dtype=float32)}\n",
      "{'predictions': array([10.863334], dtype=float32)}\n",
      "{'predictions': array([10.792783], dtype=float32)}\n",
      "{'predictions': array([11.068402], dtype=float32)}\n",
      "{'predictions': array([10.79342], dtype=float32)}\n",
      "{'predictions': array([10.792113], dtype=float32)}\n",
      "{'predictions': array([10.792509], dtype=float32)}\n",
      "{'predictions': array([10.791827], dtype=float32)}\n",
      "{'predictions': array([10.792072], dtype=float32)}\n",
      "{'predictions': array([10.792314], dtype=float32)}\n",
      "{'predictions': array([10.93145], dtype=float32)}\n",
      "{'predictions': array([10.793261], dtype=float32)}\n",
      "{'predictions': array([10.792769], dtype=float32)}\n",
      "{'predictions': array([10.793475], dtype=float32)}\n",
      "{'predictions': array([10.791284], dtype=float32)}\n",
      "{'predictions': array([11.001061], dtype=float32)}\n",
      "{'predictions': array([10.863853], dtype=float32)}\n",
      "{'predictions': array([10.79515], dtype=float32)}\n",
      "{'predictions': array([10.794008], dtype=float32)}\n",
      "{'predictions': array([10.998928], dtype=float32)}\n",
      "{'predictions': array([10.791532], dtype=float32)}\n",
      "{'predictions': array([10.793245], dtype=float32)}\n",
      "{'predictions': array([10.793141], dtype=float32)}\n",
      "{'predictions': array([10.79631], dtype=float32)}\n",
      "{'predictions': array([10.8625765], dtype=float32)}\n",
      "{'predictions': array([10.861058], dtype=float32)}\n",
      "{'predictions': array([10.793152], dtype=float32)}\n",
      "{'predictions': array([10.794429], dtype=float32)}\n",
      "{'predictions': array([10.792064], dtype=float32)}\n",
      "{'predictions': array([10.789229], dtype=float32)}\n",
      "{'predictions': array([10.7908125], dtype=float32)}\n",
      "{'predictions': array([10.793971], dtype=float32)}\n",
      "{'predictions': array([10.929964], dtype=float32)}\n",
      "{'predictions': array([11.1374], dtype=float32)}\n",
      "{'predictions': array([10.792508], dtype=float32)}\n",
      "{'predictions': array([11.067754], dtype=float32)}\n",
      "{'predictions': array([10.791338], dtype=float32)}\n",
      "{'predictions': array([10.860723], dtype=float32)}\n",
      "{'predictions': array([10.794018], dtype=float32)}\n",
      "{'predictions': array([10.863728], dtype=float32)}\n",
      "{'predictions': array([10.861685], dtype=float32)}\n",
      "{'predictions': array([10.930669], dtype=float32)}\n",
      "{'predictions': array([10.79481], dtype=float32)}\n",
      "{'predictions': array([10.795688], dtype=float32)}\n",
      "{'predictions': array([10.794248], dtype=float32)}\n",
      "{'predictions': array([10.863904], dtype=float32)}\n",
      "{'predictions': array([10.792812], dtype=float32)}\n",
      "{'predictions': array([11.001194], dtype=float32)}\n",
      "{'predictions': array([10.794265], dtype=float32)}\n",
      "{'predictions': array([10.794486], dtype=float32)}\n",
      "{'predictions': array([10.793707], dtype=float32)}\n",
      "{'predictions': array([10.862684], dtype=float32)}\n",
      "{'predictions': array([10.930642], dtype=float32)}\n",
      "{'predictions': array([10.79337], dtype=float32)}\n",
      "{'predictions': array([10.792967], dtype=float32)}\n",
      "{'predictions': array([10.7937355], dtype=float32)}\n",
      "{'predictions': array([10.795108], dtype=float32)}\n",
      "{'predictions': array([10.781075], dtype=float32)}\n",
      "{'predictions': array([10.780054], dtype=float32)}\n",
      "{'predictions': array([10.794381], dtype=float32)}\n",
      "{'predictions': array([10.860923], dtype=float32)}\n",
      "{'predictions': array([10.794035], dtype=float32)}\n",
      "{'predictions': array([10.862767], dtype=float32)}\n",
      "{'predictions': array([10.930612], dtype=float32)}\n",
      "{'predictions': array([10.862389], dtype=float32)}\n",
      "{'predictions': array([10.794734], dtype=float32)}\n",
      "{'predictions': array([10.792721], dtype=float32)}\n",
      "{'predictions': array([10.862927], dtype=float32)}\n",
      "{'predictions': array([10.863205], dtype=float32)}\n",
      "{'predictions': array([10.791938], dtype=float32)}\n",
      "{'predictions': array([10.796779], dtype=float32)}\n",
      "{'predictions': array([10.7924], dtype=float32)}\n",
      "{'predictions': array([10.788392], dtype=float32)}\n",
      "{'predictions': array([10.794259], dtype=float32)}\n",
      "{'predictions': array([10.7923155], dtype=float32)}\n",
      "{'predictions': array([10.796326], dtype=float32)}\n",
      "{'predictions': array([10.797057], dtype=float32)}\n",
      "{'predictions': array([10.788318], dtype=float32)}\n",
      "{'predictions': array([10.792769], dtype=float32)}\n",
      "{'predictions': array([10.788974], dtype=float32)}\n",
      "{'predictions': array([10.85745], dtype=float32)}\n",
      "{'predictions': array([10.795134], dtype=float32)}\n",
      "{'predictions': array([10.792029], dtype=float32)}\n",
      "{'predictions': array([10.793084], dtype=float32)}\n",
      "{'predictions': array([10.863459], dtype=float32)}\n",
      "{'predictions': array([10.850177], dtype=float32)}\n",
      "{'predictions': array([10.855754], dtype=float32)}\n",
      "{'predictions': array([10.793756], dtype=float32)}\n",
      "{'predictions': array([10.862807], dtype=float32)}\n",
      "{'predictions': array([10.794138], dtype=float32)}\n",
      "{'predictions': array([10.793652], dtype=float32)}\n",
      "{'predictions': array([10.861246], dtype=float32)}\n",
      "{'predictions': array([10.795148], dtype=float32)}\n",
      "{'predictions': array([10.792836], dtype=float32)}\n",
      "{'predictions': array([10.793653], dtype=float32)}\n",
      "{'predictions': array([10.792733], dtype=float32)}\n",
      "{'predictions': array([10.787031], dtype=float32)}\n",
      "{'predictions': array([10.861634], dtype=float32)}\n",
      "{'predictions': array([10.930325], dtype=float32)}\n",
      "{'predictions': array([10.794617], dtype=float32)}\n",
      "{'predictions': array([10.793321], dtype=float32)}\n",
      "{'predictions': array([10.795369], dtype=float32)}\n",
      "{'predictions': array([10.793208], dtype=float32)}\n",
      "{'predictions': array([10.865002], dtype=float32)}\n",
      "{'predictions': array([10.793691], dtype=float32)}\n",
      "{'predictions': array([10.862876], dtype=float32)}\n",
      "{'predictions': array([10.793576], dtype=float32)}\n",
      "{'predictions': array([10.7950535], dtype=float32)}\n",
      "{'predictions': array([10.862751], dtype=float32)}\n",
      "{'predictions': array([10.79485], dtype=float32)}\n",
      "{'predictions': array([10.792668], dtype=float32)}\n",
      "{'predictions': array([10.7918825], dtype=float32)}\n",
      "{'predictions': array([10.793839], dtype=float32)}\n",
      "{'predictions': array([10.793818], dtype=float32)}\n",
      "{'predictions': array([10.793302], dtype=float32)}\n",
      "{'predictions': array([10.856005], dtype=float32)}\n",
      "{'predictions': array([10.790959], dtype=float32)}\n",
      "{'predictions': array([10.791971], dtype=float32)}\n",
      "{'predictions': array([10.79405], dtype=float32)}\n",
      "{'predictions': array([10.7963915], dtype=float32)}\n",
      "{'predictions': array([10.793349], dtype=float32)}\n",
      "{'predictions': array([11.067667], dtype=float32)}\n",
      "{'predictions': array([10.794299], dtype=float32)}\n",
      "{'predictions': array([10.861243], dtype=float32)}\n",
      "{'predictions': array([10.793767], dtype=float32)}\n",
      "{'predictions': array([10.793559], dtype=float32)}\n",
      "{'predictions': array([10.79478], dtype=float32)}\n",
      "{'predictions': array([11.067254], dtype=float32)}\n",
      "{'predictions': array([10.795749], dtype=float32)}\n",
      "{'predictions': array([10.861572], dtype=float32)}\n",
      "{'predictions': array([10.794576], dtype=float32)}\n",
      "{'predictions': array([10.79172], dtype=float32)}\n",
      "{'predictions': array([10.861136], dtype=float32)}\n",
      "{'predictions': array([10.792297], dtype=float32)}\n",
      "{'predictions': array([10.860247], dtype=float32)}\n",
      "{'predictions': array([10.793046], dtype=float32)}\n",
      "{'predictions': array([10.793383], dtype=float32)}\n",
      "{'predictions': array([11.001643], dtype=float32)}\n",
      "{'predictions': array([10.79481], dtype=float32)}\n",
      "{'predictions': array([11.068469], dtype=float32)}\n",
      "{'predictions': array([10.929601], dtype=float32)}\n",
      "{'predictions': array([10.862567], dtype=float32)}\n",
      "{'predictions': array([10.793989], dtype=float32)}\n",
      "{'predictions': array([10.78931], dtype=float32)}\n",
      "{'predictions': array([10.792342], dtype=float32)}\n",
      "{'predictions': array([10.792613], dtype=float32)}\n",
      "{'predictions': array([10.86116], dtype=float32)}\n",
      "{'predictions': array([10.863633], dtype=float32)}\n",
      "{'predictions': array([10.794201], dtype=float32)}\n",
      "{'predictions': array([10.931692], dtype=float32)}\n",
      "{'predictions': array([10.79399], dtype=float32)}\n",
      "{'predictions': array([10.793851], dtype=float32)}\n",
      "{'predictions': array([11.067285], dtype=float32)}\n",
      "{'predictions': array([10.856614], dtype=float32)}\n",
      "{'predictions': array([10.793173], dtype=float32)}\n",
      "{'predictions': array([10.792796], dtype=float32)}\n",
      "{'predictions': array([10.79634], dtype=float32)}\n",
      "{'predictions': array([11.139626], dtype=float32)}\n",
      "{'predictions': array([10.931087], dtype=float32)}\n",
      "{'predictions': array([10.788936], dtype=float32)}\n",
      "{'predictions': array([10.793245], dtype=float32)}\n",
      "{'predictions': array([10.794195], dtype=float32)}\n",
      "{'predictions': array([10.792431], dtype=float32)}\n",
      "{'predictions': array([10.792332], dtype=float32)}\n",
      "{'predictions': array([10.860068], dtype=float32)}\n",
      "{'predictions': array([10.792365], dtype=float32)}\n",
      "{'predictions': array([11.13774], dtype=float32)}\n",
      "{'predictions': array([10.793058], dtype=float32)}\n",
      "{'predictions': array([10.793515], dtype=float32)}\n",
      "{'predictions': array([10.794886], dtype=float32)}\n",
      "{'predictions': array([11.067425], dtype=float32)}\n",
      "{'predictions': array([11.067539], dtype=float32)}\n",
      "{'predictions': array([11.055445], dtype=float32)}\n",
      "{'predictions': array([10.932103], dtype=float32)}\n",
      "{'predictions': array([10.929763], dtype=float32)}\n",
      "{'predictions': array([10.789561], dtype=float32)}\n",
      "{'predictions': array([11.069477], dtype=float32)}\n",
      "{'predictions': array([10.862436], dtype=float32)}\n",
      "{'predictions': array([10.861453], dtype=float32)}\n",
      "{'predictions': array([10.793816], dtype=float32)}\n",
      "{'predictions': array([10.931375], dtype=float32)}\n",
      "{'predictions': array([11.065929], dtype=float32)}\n",
      "{'predictions': array([10.7939205], dtype=float32)}\n",
      "{'predictions': array([10.792503], dtype=float32)}\n",
      "{'predictions': array([10.788329], dtype=float32)}\n",
      "{'predictions': array([10.7942], dtype=float32)}\n",
      "{'predictions': array([10.863606], dtype=float32)}\n",
      "{'predictions': array([10.793185], dtype=float32)}\n",
      "{'predictions': array([10.793147], dtype=float32)}\n",
      "{'predictions': array([10.800457], dtype=float32)}\n",
      "{'predictions': array([11.067816], dtype=float32)}\n",
      "{'predictions': array([10.861797], dtype=float32)}\n",
      "{'predictions': array([11.135947], dtype=float32)}\n",
      "{'predictions': array([10.784665], dtype=float32)}\n",
      "{'predictions': array([10.793735], dtype=float32)}\n",
      "{'predictions': array([10.794037], dtype=float32)}\n",
      "{'predictions': array([10.793408], dtype=float32)}\n",
      "{'predictions': array([10.792653], dtype=float32)}\n",
      "{'predictions': array([10.863095], dtype=float32)}\n",
      "{'predictions': array([10.861548], dtype=float32)}\n",
      "{'predictions': array([10.793288], dtype=float32)}\n",
      "{'predictions': array([10.793132], dtype=float32)}\n",
      "{'predictions': array([10.862], dtype=float32)}\n",
      "{'predictions': array([10.793495], dtype=float32)}\n",
      "{'predictions': array([10.865706], dtype=float32)}\n",
      "{'predictions': array([10.861966], dtype=float32)}\n",
      "{'predictions': array([10.863455], dtype=float32)}\n",
      "{'predictions': array([10.79276], dtype=float32)}\n",
      "{'predictions': array([10.793615], dtype=float32)}\n",
      "{'predictions': array([10.792783], dtype=float32)}\n",
      "{'predictions': array([11.060312], dtype=float32)}\n",
      "{'predictions': array([11.069264], dtype=float32)}\n",
      "{'predictions': array([10.861327], dtype=float32)}\n",
      "{'predictions': array([10.789256], dtype=float32)}\n",
      "{'predictions': array([10.793237], dtype=float32)}\n",
      "{'predictions': array([10.793959], dtype=float32)}\n",
      "{'predictions': array([10.858286], dtype=float32)}\n",
      "{'predictions': array([10.860613], dtype=float32)}\n",
      "{'predictions': array([11.066234], dtype=float32)}\n",
      "{'predictions': array([10.793462], dtype=float32)}\n",
      "{'predictions': array([10.930856], dtype=float32)}\n",
      "{'predictions': array([10.792842], dtype=float32)}\n",
      "{'predictions': array([10.796917], dtype=float32)}\n",
      "{'predictions': array([10.862747], dtype=float32)}\n",
      "{'predictions': array([10.863795], dtype=float32)}\n",
      "{'predictions': array([10.791755], dtype=float32)}\n",
      "{'predictions': array([10.79357], dtype=float32)}\n",
      "{'predictions': array([10.794248], dtype=float32)}\n",
      "{'predictions': array([10.847385], dtype=float32)}\n",
      "{'predictions': array([10.863179], dtype=float32)}\n",
      "{'predictions': array([10.862246], dtype=float32)}\n",
      "{'predictions': array([10.862429], dtype=float32)}\n",
      "{'predictions': array([10.79433], dtype=float32)}\n",
      "{'predictions': array([10.793696], dtype=float32)}\n",
      "{'predictions': array([10.931922], dtype=float32)}\n",
      "{'predictions': array([10.86154], dtype=float32)}\n",
      "{'predictions': array([11.055352], dtype=float32)}\n",
      "{'predictions': array([10.862852], dtype=float32)}\n",
      "{'predictions': array([10.790412], dtype=float32)}\n",
      "{'predictions': array([11.066849], dtype=float32)}\n",
      "{'predictions': array([10.7949], dtype=float32)}\n",
      "{'predictions': array([10.86304], dtype=float32)}\n",
      "{'predictions': array([10.793717], dtype=float32)}\n",
      "{'predictions': array([10.793954], dtype=float32)}\n",
      "{'predictions': array([10.789571], dtype=float32)}\n",
      "{'predictions': array([10.792298], dtype=float32)}\n",
      "{'predictions': array([11.069229], dtype=float32)}\n",
      "{'predictions': array([10.775903], dtype=float32)}\n",
      "{'predictions': array([10.79358], dtype=float32)}\n",
      "{'predictions': array([10.792235], dtype=float32)}\n",
      "{'predictions': array([11.0674925], dtype=float32)}\n",
      "{'predictions': array([10.793591], dtype=float32)}\n",
      "{'predictions': array([10.793464], dtype=float32)}\n",
      "{'predictions': array([10.7937], dtype=float32)}\n",
      "{'predictions': array([10.860785], dtype=float32)}\n",
      "{'predictions': array([10.793808], dtype=float32)}\n",
      "{'predictions': array([10.792875], dtype=float32)}\n",
      "{'predictions': array([11.066829], dtype=float32)}\n",
      "{'predictions': array([11.070579], dtype=float32)}\n",
      "{'predictions': array([10.793255], dtype=float32)}\n",
      "{'predictions': array([10.791359], dtype=float32)}\n",
      "{'predictions': array([11.003016], dtype=float32)}\n",
      "{'predictions': array([10.794984], dtype=float32)}\n",
      "{'predictions': array([10.794011], dtype=float32)}\n",
      "{'predictions': array([10.794847], dtype=float32)}\n",
      "{'predictions': array([10.795658], dtype=float32)}\n",
      "{'predictions': array([11.064202], dtype=float32)}\n",
      "{'predictions': array([10.792619], dtype=float32)}\n",
      "{'predictions': array([10.79307], dtype=float32)}\n",
      "{'predictions': array([10.792504], dtype=float32)}\n",
      "{'predictions': array([10.799906], dtype=float32)}\n",
      "{'predictions': array([10.793551], dtype=float32)}\n",
      "{'predictions': array([10.849588], dtype=float32)}\n",
      "{'predictions': array([10.999726], dtype=float32)}\n",
      "{'predictions': array([10.789332], dtype=float32)}\n",
      "{'predictions': array([10.862275], dtype=float32)}\n",
      "{'predictions': array([10.794799], dtype=float32)}\n",
      "{'predictions': array([10.931379], dtype=float32)}\n",
      "{'predictions': array([10.794264], dtype=float32)}\n",
      "{'predictions': array([10.862163], dtype=float32)}\n",
      "{'predictions': array([10.794254], dtype=float32)}\n",
      "{'predictions': array([10.794102], dtype=float32)}\n",
      "{'predictions': array([10.791961], dtype=float32)}\n",
      "{'predictions': array([10.795544], dtype=float32)}\n",
      "{'predictions': array([10.788977], dtype=float32)}\n",
      "{'predictions': array([10.875], dtype=float32)}\n",
      "{'predictions': array([10.863563], dtype=float32)}\n",
      "{'predictions': array([10.79295], dtype=float32)}\n",
      "{'predictions': array([10.791064], dtype=float32)}\n",
      "{'predictions': array([10.793443], dtype=float32)}\n",
      "{'predictions': array([10.792454], dtype=float32)}\n",
      "{'predictions': array([10.794552], dtype=float32)}\n",
      "{'predictions': array([10.793295], dtype=float32)}\n",
      "{'predictions': array([10.931081], dtype=float32)}\n",
      "{'predictions': array([10.775157], dtype=float32)}\n",
      "{'predictions': array([10.7934], dtype=float32)}\n",
      "{'predictions': array([10.791535], dtype=float32)}\n",
      "{'predictions': array([10.783321], dtype=float32)}\n",
      "{'predictions': array([10.794957], dtype=float32)}\n",
      "{'predictions': array([10.794791], dtype=float32)}\n",
      "{'predictions': array([10.79299], dtype=float32)}\n",
      "{'predictions': array([10.79349], dtype=float32)}\n",
      "{'predictions': array([10.79399], dtype=float32)}\n",
      "{'predictions': array([10.794495], dtype=float32)}\n",
      "{'predictions': array([10.793955], dtype=float32)}\n",
      "{'predictions': array([10.793148], dtype=float32)}\n",
      "{'predictions': array([10.788808], dtype=float32)}\n",
      "{'predictions': array([10.791969], dtype=float32)}\n",
      "{'predictions': array([10.862767], dtype=float32)}\n",
      "{'predictions': array([10.860985], dtype=float32)}\n",
      "{'predictions': array([11.06714], dtype=float32)}\n",
      "{'predictions': array([10.792752], dtype=float32)}\n",
      "{'predictions': array([10.793084], dtype=float32)}\n",
      "{'predictions': array([10.79376], dtype=float32)}\n",
      "{'predictions': array([10.998748], dtype=float32)}\n",
      "{'predictions': array([10.861686], dtype=float32)}\n",
      "{'predictions': array([10.79569], dtype=float32)}\n",
      "{'predictions': array([10.857885], dtype=float32)}\n",
      "{'predictions': array([10.793233], dtype=float32)}\n",
      "{'predictions': array([10.793646], dtype=float32)}\n",
      "{'predictions': array([11.064975], dtype=float32)}\n",
      "{'predictions': array([11.067901], dtype=float32)}\n",
      "{'predictions': array([10.793307], dtype=float32)}\n",
      "{'predictions': array([10.792804], dtype=float32)}\n",
      "{'predictions': array([11.13788], dtype=float32)}\n",
      "{'predictions': array([11.067561], dtype=float32)}\n",
      "{'predictions': array([10.795011], dtype=float32)}\n",
      "{'predictions': array([10.793128], dtype=float32)}\n",
      "{'predictions': array([10.862942], dtype=float32)}\n",
      "{'predictions': array([11.070436], dtype=float32)}\n",
      "{'predictions': array([10.791582], dtype=float32)}\n",
      "{'predictions': array([10.864895], dtype=float32)}\n",
      "{'predictions': array([10.795632], dtype=float32)}\n",
      "{'predictions': array([10.860938], dtype=float32)}\n",
      "{'predictions': array([10.794029], dtype=float32)}\n",
      "{'predictions': array([10.788129], dtype=float32)}\n",
      "{'predictions': array([10.858272], dtype=float32)}\n",
      "{'predictions': array([10.792777], dtype=float32)}\n",
      "{'predictions': array([10.929587], dtype=float32)}\n",
      "{'predictions': array([10.795711], dtype=float32)}\n",
      "{'predictions': array([10.793828], dtype=float32)}\n",
      "{'predictions': array([10.792405], dtype=float32)}\n",
      "{'predictions': array([11.070964], dtype=float32)}\n",
      "{'predictions': array([10.794139], dtype=float32)}\n",
      "{'predictions': array([10.794074], dtype=float32)}\n",
      "{'predictions': array([10.794723], dtype=float32)}\n",
      "{'predictions': array([10.794436], dtype=float32)}\n",
      "{'predictions': array([10.793049], dtype=float32)}\n",
      "{'predictions': array([10.862565], dtype=float32)}\n",
      "{'predictions': array([10.795299], dtype=float32)}\n",
      "{'predictions': array([10.78934], dtype=float32)}\n",
      "{'predictions': array([11.00106], dtype=float32)}\n",
      "{'predictions': array([10.7792], dtype=float32)}\n",
      "{'predictions': array([10.792521], dtype=float32)}\n",
      "{'predictions': array([10.793925], dtype=float32)}\n",
      "{'predictions': array([10.794282], dtype=float32)}\n",
      "{'predictions': array([10.794124], dtype=float32)}\n",
      "{'predictions': array([10.793591], dtype=float32)}\n",
      "{'predictions': array([10.793211], dtype=float32)}\n",
      "{'predictions': array([10.84191], dtype=float32)}\n",
      "{'predictions': array([10.86023], dtype=float32)}\n",
      "{'predictions': array([10.860437], dtype=float32)}\n",
      "{'predictions': array([10.7838125], dtype=float32)}\n",
      "{'predictions': array([10.797394], dtype=float32)}\n",
      "{'predictions': array([11.068267], dtype=float32)}\n",
      "{'predictions': array([10.861295], dtype=float32)}\n",
      "{'predictions': array([10.787604], dtype=float32)}\n",
      "{'predictions': array([11.070969], dtype=float32)}\n",
      "{'predictions': array([10.865277], dtype=float32)}\n",
      "{'predictions': array([10.793051], dtype=float32)}\n",
      "{'predictions': array([10.792561], dtype=float32)}\n",
      "{'predictions': array([11.068152], dtype=float32)}\n",
      "{'predictions': array([10.794975], dtype=float32)}\n",
      "{'predictions': array([10.861471], dtype=float32)}\n",
      "{'predictions': array([10.79355], dtype=float32)}\n",
      "{'predictions': array([10.79216], dtype=float32)}\n",
      "{'predictions': array([10.794038], dtype=float32)}\n",
      "{'predictions': array([10.792859], dtype=float32)}\n",
      "{'predictions': array([11.066396], dtype=float32)}\n",
      "{'predictions': array([10.794062], dtype=float32)}\n",
      "{'predictions': array([11.067045], dtype=float32)}\n",
      "{'predictions': array([10.791364], dtype=float32)}\n",
      "{'predictions': array([10.861259], dtype=float32)}\n",
      "{'predictions': array([10.793362], dtype=float32)}\n",
      "{'predictions': array([11.136766], dtype=float32)}\n",
      "{'predictions': array([10.793357], dtype=float32)}\n",
      "{'predictions': array([10.791988], dtype=float32)}\n",
      "{'predictions': array([10.792428], dtype=float32)}\n",
      "{'predictions': array([10.792905], dtype=float32)}\n",
      "{'predictions': array([10.793739], dtype=float32)}\n",
      "{'predictions': array([10.863795], dtype=float32)}\n",
      "{'predictions': array([10.860044], dtype=float32)}\n",
      "{'predictions': array([10.792096], dtype=float32)}\n",
      "{'predictions': array([10.792378], dtype=float32)}\n",
      "{'predictions': array([10.795841], dtype=float32)}\n",
      "{'predictions': array([10.862463], dtype=float32)}\n",
      "{'predictions': array([10.794333], dtype=float32)}\n",
      "{'predictions': array([10.795415], dtype=float32)}\n",
      "{'predictions': array([10.863083], dtype=float32)}\n",
      "{'predictions': array([10.865222], dtype=float32)}\n",
      "{'predictions': array([10.793975], dtype=float32)}\n",
      "{'predictions': array([10.931764], dtype=float32)}\n",
      "{'predictions': array([10.793451], dtype=float32)}\n",
      "{'predictions': array([10.927648], dtype=float32)}\n",
      "{'predictions': array([10.995025], dtype=float32)}\n",
      "{'predictions': array([10.795327], dtype=float32)}\n",
      "{'predictions': array([10.795439], dtype=float32)}\n",
      "{'predictions': array([10.862273], dtype=float32)}\n",
      "{'predictions': array([10.86177], dtype=float32)}\n",
      "{'predictions': array([10.794654], dtype=float32)}\n",
      "{'predictions': array([10.793587], dtype=float32)}\n",
      "{'predictions': array([10.793168], dtype=float32)}\n",
      "{'predictions': array([11.068291], dtype=float32)}\n",
      "{'predictions': array([10.7898855], dtype=float32)}\n",
      "{'predictions': array([10.7944], dtype=float32)}\n",
      "{'predictions': array([10.792975], dtype=float32)}\n",
      "{'predictions': array([10.792048], dtype=float32)}\n",
      "{'predictions': array([11.068156], dtype=float32)}\n",
      "{'predictions': array([10.79284], dtype=float32)}\n",
      "{'predictions': array([10.861952], dtype=float32)}\n",
      "{'predictions': array([10.792836], dtype=float32)}\n",
      "{'predictions': array([10.78813], dtype=float32)}\n",
      "{'predictions': array([10.861278], dtype=float32)}\n",
      "{'predictions': array([10.864305], dtype=float32)}\n",
      "{'predictions': array([10.792798], dtype=float32)}\n",
      "{'predictions': array([10.930574], dtype=float32)}\n",
      "{'predictions': array([10.862147], dtype=float32)}\n",
      "{'predictions': array([10.931546], dtype=float32)}\n",
      "{'predictions': array([10.86284], dtype=float32)}\n",
      "{'predictions': array([10.860929], dtype=float32)}\n",
      "{'predictions': array([10.793191], dtype=float32)}\n",
      "{'predictions': array([10.792783], dtype=float32)}\n",
      "{'predictions': array([10.793205], dtype=float32)}\n",
      "{'predictions': array([10.860778], dtype=float32)}\n",
      "{'predictions': array([10.792869], dtype=float32)}\n",
      "{'predictions': array([10.793516], dtype=float32)}\n",
      "{'predictions': array([10.793306], dtype=float32)}\n",
      "{'predictions': array([10.862656], dtype=float32)}\n",
      "{'predictions': array([10.862044], dtype=float32)}\n",
      "{'predictions': array([10.793052], dtype=float32)}\n",
      "{'predictions': array([10.9321785], dtype=float32)}\n",
      "{'predictions': array([10.930651], dtype=float32)}\n",
      "{'predictions': array([10.790764], dtype=float32)}\n",
      "{'predictions': array([10.794892], dtype=float32)}\n",
      "{'predictions': array([10.792516], dtype=float32)}\n",
      "{'predictions': array([10.860209], dtype=float32)}\n",
      "{'predictions': array([10.794369], dtype=float32)}\n",
      "{'predictions': array([10.792452], dtype=float32)}\n",
      "{'predictions': array([10.865245], dtype=float32)}\n",
      "{'predictions': array([10.861856], dtype=float32)}\n",
      "{'predictions': array([11.068967], dtype=float32)}\n",
      "{'predictions': array([10.793342], dtype=float32)}\n",
      "{'predictions': array([10.793146], dtype=float32)}\n",
      "{'predictions': array([10.794434], dtype=float32)}\n",
      "{'predictions': array([10.861398], dtype=float32)}\n",
      "{'predictions': array([10.792335], dtype=float32)}\n",
      "{'predictions': array([10.792526], dtype=float32)}\n",
      "{'predictions': array([10.86299], dtype=float32)}\n",
      "{'predictions': array([10.7933855], dtype=float32)}\n",
      "{'predictions': array([10.79205], dtype=float32)}\n",
      "{'predictions': array([10.862212], dtype=float32)}\n",
      "{'predictions': array([10.793559], dtype=float32)}\n",
      "{'predictions': array([11.139072], dtype=float32)}\n",
      "{'predictions': array([10.790587], dtype=float32)}\n",
      "{'predictions': array([11.069757], dtype=float32)}\n",
      "{'predictions': array([10.792579], dtype=float32)}\n",
      "{'predictions': array([10.998308], dtype=float32)}\n",
      "{'predictions': array([10.789182], dtype=float32)}\n",
      "{'predictions': array([10.793931], dtype=float32)}\n",
      "{'predictions': array([10.861099], dtype=float32)}\n",
      "{'predictions': array([10.794094], dtype=float32)}\n",
      "{'predictions': array([11.135982], dtype=float32)}\n",
      "{'predictions': array([10.792793], dtype=float32)}\n",
      "{'predictions': array([10.793137], dtype=float32)}\n",
      "{'predictions': array([10.970608], dtype=float32)}\n",
      "{'predictions': array([10.795585], dtype=float32)}\n",
      "{'predictions': array([10.792743], dtype=float32)}\n",
      "{'predictions': array([10.793671], dtype=float32)}\n",
      "{'predictions': array([10.793906], dtype=float32)}\n",
      "{'predictions': array([10.858897], dtype=float32)}\n",
      "{'predictions': array([10.8551855], dtype=float32)}\n",
      "{'predictions': array([10.794864], dtype=float32)}\n",
      "{'predictions': array([10.793765], dtype=float32)}\n",
      "{'predictions': array([10.790044], dtype=float32)}\n",
      "{'predictions': array([10.863544], dtype=float32)}\n",
      "{'predictions': array([10.795222], dtype=float32)}\n",
      "{'predictions': array([10.79252], dtype=float32)}\n",
      "{'predictions': array([10.91642], dtype=float32)}\n",
      "{'predictions': array([10.792844], dtype=float32)}\n",
      "{'predictions': array([10.778968], dtype=float32)}\n",
      "{'predictions': array([10.793744], dtype=float32)}\n",
      "{'predictions': array([10.793069], dtype=float32)}\n",
      "{'predictions': array([10.861146], dtype=float32)}\n",
      "{'predictions': array([10.795449], dtype=float32)}\n",
      "{'predictions': array([11.068134], dtype=float32)}\n",
      "{'predictions': array([10.792759], dtype=float32)}\n",
      "{'predictions': array([10.792013], dtype=float32)}\n",
      "{'predictions': array([10.9296465], dtype=float32)}\n",
      "{'predictions': array([10.793346], dtype=float32)}\n",
      "{'predictions': array([10.862704], dtype=float32)}\n",
      "{'predictions': array([10.794261], dtype=float32)}\n",
      "{'predictions': array([10.788827], dtype=float32)}\n",
      "{'predictions': array([10.793504], dtype=float32)}\n",
      "{'predictions': array([10.794466], dtype=float32)}\n",
      "{'predictions': array([10.792614], dtype=float32)}\n",
      "{'predictions': array([11.065688], dtype=float32)}\n",
      "{'predictions': array([10.861891], dtype=float32)}\n",
      "{'predictions': array([10.860471], dtype=float32)}\n",
      "{'predictions': array([10.793589], dtype=float32)}\n",
      "{'predictions': array([10.79597], dtype=float32)}\n",
      "{'predictions': array([10.792823], dtype=float32)}\n",
      "{'predictions': array([10.793508], dtype=float32)}\n",
      "{'predictions': array([10.793735], dtype=float32)}\n",
      "{'predictions': array([10.794236], dtype=float32)}\n",
      "{'predictions': array([10.933467], dtype=float32)}\n",
      "{'predictions': array([10.792642], dtype=float32)}\n",
      "{'predictions': array([10.7928705], dtype=float32)}\n",
      "{'predictions': array([10.7930765], dtype=float32)}\n",
      "{'predictions': array([10.933193], dtype=float32)}\n",
      "{'predictions': array([10.929691], dtype=float32)}\n",
      "{'predictions': array([10.795104], dtype=float32)}\n",
      "{'predictions': array([10.793685], dtype=float32)}\n",
      "{'predictions': array([10.795743], dtype=float32)}\n",
      "{'predictions': array([10.792782], dtype=float32)}\n",
      "{'predictions': array([10.789252], dtype=float32)}\n",
      "{'predictions': array([10.8621645], dtype=float32)}\n",
      "{'predictions': array([10.793063], dtype=float32)}\n",
      "{'predictions': array([10.86244], dtype=float32)}\n",
      "{'predictions': array([10.856554], dtype=float32)}\n",
      "{'predictions': array([10.998023], dtype=float32)}\n",
      "{'predictions': array([10.783168], dtype=float32)}\n",
      "{'predictions': array([10.858289], dtype=float32)}\n",
      "{'predictions': array([10.995658], dtype=float32)}\n",
      "{'predictions': array([10.792935], dtype=float32)}\n",
      "{'predictions': array([10.931691], dtype=float32)}\n",
      "{'predictions': array([10.793164], dtype=float32)}\n",
      "{'predictions': array([10.86271], dtype=float32)}\n",
      "{'predictions': array([10.7913885], dtype=float32)}\n",
      "{'predictions': array([10.793538], dtype=float32)}\n",
      "{'predictions': array([10.86095], dtype=float32)}\n",
      "{'predictions': array([10.794001], dtype=float32)}\n",
      "{'predictions': array([10.851793], dtype=float32)}\n",
      "{'predictions': array([10.862209], dtype=float32)}\n",
      "{'predictions': array([10.792874], dtype=float32)}\n",
      "{'predictions': array([10.862117], dtype=float32)}\n",
      "{'predictions': array([10.794729], dtype=float32)}\n",
      "{'predictions': array([10.862909], dtype=float32)}\n",
      "{'predictions': array([10.793091], dtype=float32)}\n",
      "{'predictions': array([10.794267], dtype=float32)}\n",
      "{'predictions': array([10.86304], dtype=float32)}\n",
      "{'predictions': array([10.791423], dtype=float32)}\n",
      "{'predictions': array([10.9320965], dtype=float32)}\n",
      "{'predictions': array([10.793021], dtype=float32)}\n",
      "{'predictions': array([10.85743], dtype=float32)}\n",
      "{'predictions': array([11.136838], dtype=float32)}\n",
      "{'predictions': array([10.9311495], dtype=float32)}\n",
      "{'predictions': array([10.931363], dtype=float32)}\n",
      "{'predictions': array([10.796179], dtype=float32)}\n",
      "{'predictions': array([10.85768], dtype=float32)}\n",
      "{'predictions': array([10.792598], dtype=float32)}\n",
      "{'predictions': array([10.861648], dtype=float32)}\n",
      "{'predictions': array([10.794959], dtype=float32)}\n",
      "{'predictions': array([10.926503], dtype=float32)}\n",
      "{'predictions': array([10.793008], dtype=float32)}\n",
      "{'predictions': array([10.792433], dtype=float32)}\n",
      "{'predictions': array([10.7940035], dtype=float32)}\n",
      "{'predictions': array([11.136239], dtype=float32)}\n",
      "{'predictions': array([10.931651], dtype=float32)}\n",
      "{'predictions': array([10.8611555], dtype=float32)}\n",
      "{'predictions': array([10.795715], dtype=float32)}\n",
      "{'predictions': array([10.79307], dtype=float32)}\n",
      "{'predictions': array([10.7945385], dtype=float32)}\n",
      "{'predictions': array([10.792796], dtype=float32)}\n",
      "{'predictions': array([11.066437], dtype=float32)}\n",
      "{'predictions': array([10.783545], dtype=float32)}\n",
      "{'predictions': array([10.792695], dtype=float32)}\n",
      "{'predictions': array([10.793315], dtype=float32)}\n",
      "{'predictions': array([10.793376], dtype=float32)}\n",
      "{'predictions': array([11.068201], dtype=float32)}\n",
      "{'predictions': array([10.929278], dtype=float32)}\n",
      "{'predictions': array([10.793563], dtype=float32)}\n",
      "{'predictions': array([11.136994], dtype=float32)}\n",
      "{'predictions': array([10.79536], dtype=float32)}\n",
      "{'predictions': array([10.792369], dtype=float32)}\n",
      "{'predictions': array([10.794341], dtype=float32)}\n",
      "{'predictions': array([10.793538], dtype=float32)}\n",
      "{'predictions': array([10.793159], dtype=float32)}\n",
      "{'predictions': array([10.793842], dtype=float32)}\n",
      "{'predictions': array([10.791996], dtype=float32)}\n",
      "{'predictions': array([10.795712], dtype=float32)}\n",
      "{'predictions': array([10.792778], dtype=float32)}\n",
      "{'predictions': array([10.792394], dtype=float32)}\n",
      "{'predictions': array([10.792718], dtype=float32)}\n",
      "{'predictions': array([10.7934675], dtype=float32)}\n",
      "{'predictions': array([10.793254], dtype=float32)}\n",
      "{'predictions': array([10.79033], dtype=float32)}\n",
      "{'predictions': array([10.860904], dtype=float32)}\n",
      "{'predictions': array([10.789082], dtype=float32)}\n",
      "{'predictions': array([10.794316], dtype=float32)}\n",
      "{'predictions': array([10.793062], dtype=float32)}\n",
      "{'predictions': array([10.793273], dtype=float32)}\n",
      "{'predictions': array([10.78919], dtype=float32)}\n",
      "{'predictions': array([10.794345], dtype=float32)}\n",
      "{'predictions': array([10.795688], dtype=float32)}\n",
      "{'predictions': array([10.796009], dtype=float32)}\n",
      "{'predictions': array([10.933576], dtype=float32)}\n",
      "{'predictions': array([10.79289], dtype=float32)}\n",
      "{'predictions': array([10.793242], dtype=float32)}\n",
      "{'predictions': array([10.931113], dtype=float32)}\n",
      "{'predictions': array([10.792232], dtype=float32)}\n",
      "{'predictions': array([10.79519], dtype=float32)}\n",
      "{'predictions': array([11.137493], dtype=float32)}\n",
      "{'predictions': array([11.069896], dtype=float32)}\n",
      "{'predictions': array([10.79333], dtype=float32)}\n",
      "{'predictions': array([10.848321], dtype=float32)}\n",
      "{'predictions': array([10.795075], dtype=float32)}\n",
      "{'predictions': array([11.067921], dtype=float32)}\n",
      "{'predictions': array([10.794589], dtype=float32)}\n",
      "{'predictions': array([10.794904], dtype=float32)}\n",
      "{'predictions': array([11.067933], dtype=float32)}\n",
      "{'predictions': array([10.861798], dtype=float32)}\n",
      "{'predictions': array([10.793241], dtype=float32)}\n",
      "{'predictions': array([10.794488], dtype=float32)}\n",
      "{'predictions': array([10.996198], dtype=float32)}\n",
      "{'predictions': array([10.861569], dtype=float32)}\n",
      "{'predictions': array([11.066503], dtype=float32)}\n",
      "{'predictions': array([10.8633], dtype=float32)}\n",
      "{'predictions': array([10.998448], dtype=float32)}\n",
      "{'predictions': array([10.8617525], dtype=float32)}\n",
      "{'predictions': array([10.794598], dtype=float32)}\n",
      "{'predictions': array([10.780876], dtype=float32)}\n",
      "{'predictions': array([10.793363], dtype=float32)}\n",
      "{'predictions': array([10.792865], dtype=float32)}\n",
      "{'predictions': array([10.792508], dtype=float32)}\n",
      "{'predictions': array([10.792865], dtype=float32)}\n",
      "{'predictions': array([10.864791], dtype=float32)}\n",
      "{'predictions': array([10.793255], dtype=float32)}\n",
      "{'predictions': array([10.794818], dtype=float32)}\n",
      "{'predictions': array([11.070207], dtype=float32)}\n",
      "{'predictions': array([10.931775], dtype=float32)}\n",
      "{'predictions': array([10.793807], dtype=float32)}\n",
      "{'predictions': array([10.794101], dtype=float32)}\n",
      "{'predictions': array([10.787811], dtype=float32)}\n",
      "{'predictions': array([10.791642], dtype=float32)}\n",
      "{'predictions': array([10.795921], dtype=float32)}\n",
      "{'predictions': array([10.788678], dtype=float32)}\n",
      "{'predictions': array([11.137212], dtype=float32)}\n",
      "{'predictions': array([10.793502], dtype=float32)}\n",
      "{'predictions': array([10.790326], dtype=float32)}\n",
      "{'predictions': array([10.79367], dtype=float32)}\n",
      "{'predictions': array([11.069809], dtype=float32)}\n",
      "{'predictions': array([10.86332], dtype=float32)}\n",
      "{'predictions': array([10.79355], dtype=float32)}\n",
      "{'predictions': array([10.794354], dtype=float32)}\n",
      "{'predictions': array([10.8610525], dtype=float32)}\n",
      "{'predictions': array([10.791014], dtype=float32)}\n",
      "{'predictions': array([10.792815], dtype=float32)}\n",
      "{'predictions': array([11.069891], dtype=float32)}\n",
      "{'predictions': array([10.930721], dtype=float32)}\n",
      "{'predictions': array([10.793263], dtype=float32)}\n",
      "{'predictions': array([10.793889], dtype=float32)}\n",
      "{'predictions': array([10.793532], dtype=float32)}\n",
      "{'predictions': array([10.7924385], dtype=float32)}\n",
      "{'predictions': array([10.7924795], dtype=float32)}\n",
      "{'predictions': array([10.862005], dtype=float32)}\n",
      "{'predictions': array([10.791926], dtype=float32)}\n",
      "{'predictions': array([11.066884], dtype=float32)}\n",
      "{'predictions': array([10.793275], dtype=float32)}\n",
      "{'predictions': array([10.793463], dtype=float32)}\n",
      "{'predictions': array([10.793919], dtype=float32)}\n",
      "{'predictions': array([10.792949], dtype=float32)}\n",
      "{'predictions': array([10.93127], dtype=float32)}\n",
      "{'predictions': array([10.794391], dtype=float32)}\n",
      "{'predictions': array([10.79263], dtype=float32)}\n",
      "{'predictions': array([10.795425], dtype=float32)}\n",
      "{'predictions': array([10.861613], dtype=float32)}\n",
      "{'predictions': array([10.794533], dtype=float32)}\n",
      "{'predictions': array([10.857926], dtype=float32)}\n",
      "{'predictions': array([10.794871], dtype=float32)}\n",
      "{'predictions': array([10.794597], dtype=float32)}\n",
      "{'predictions': array([10.847687], dtype=float32)}\n",
      "{'predictions': array([10.771823], dtype=float32)}\n",
      "{'predictions': array([10.793859], dtype=float32)}\n",
      "{'predictions': array([10.796066], dtype=float32)}\n",
      "{'predictions': array([10.791347], dtype=float32)}\n",
      "{'predictions': array([10.862012], dtype=float32)}\n",
      "{'predictions': array([10.793184], dtype=float32)}\n",
      "{'predictions': array([10.78909], dtype=float32)}\n",
      "{'predictions': array([10.79255], dtype=float32)}\n",
      "{'predictions': array([11.061798], dtype=float32)}\n",
      "{'predictions': array([10.931065], dtype=float32)}\n",
      "{'predictions': array([10.792705], dtype=float32)}\n",
      "{'predictions': array([10.794105], dtype=float32)}\n",
      "{'predictions': array([10.929472], dtype=float32)}\n",
      "{'predictions': array([10.793246], dtype=float32)}\n",
      "{'predictions': array([11.068397], dtype=float32)}\n",
      "{'predictions': array([10.793199], dtype=float32)}\n",
      "{'predictions': array([10.792874], dtype=float32)}\n",
      "{'predictions': array([10.862674], dtype=float32)}\n",
      "{'predictions': array([11.13667], dtype=float32)}\n",
      "{'predictions': array([10.791497], dtype=float32)}\n",
      "{'predictions': array([10.790665], dtype=float32)}\n",
      "{'predictions': array([10.85583], dtype=float32)}\n",
      "{'predictions': array([10.791528], dtype=float32)}\n",
      "{'predictions': array([10.792777], dtype=float32)}\n",
      "{'predictions': array([10.862006], dtype=float32)}\n",
      "{'predictions': array([11.067521], dtype=float32)}\n",
      "{'predictions': array([10.926339], dtype=float32)}\n",
      "{'predictions': array([10.79286], dtype=float32)}\n",
      "{'predictions': array([10.7925625], dtype=float32)}\n",
      "{'predictions': array([10.8619585], dtype=float32)}\n",
      "{'predictions': array([10.788877], dtype=float32)}\n",
      "{'predictions': array([10.79514], dtype=float32)}\n",
      "{'predictions': array([11.069163], dtype=float32)}\n",
      "{'predictions': array([10.792794], dtype=float32)}\n",
      "{'predictions': array([11.067005], dtype=float32)}\n",
      "{'predictions': array([10.795662], dtype=float32)}\n",
      "{'predictions': array([11.067296], dtype=float32)}\n",
      "{'predictions': array([10.793361], dtype=float32)}\n",
      "{'predictions': array([10.793704], dtype=float32)}\n",
      "{'predictions': array([10.864692], dtype=float32)}\n",
      "{'predictions': array([10.765265], dtype=float32)}\n",
      "{'predictions': array([10.793106], dtype=float32)}\n",
      "{'predictions': array([10.790906], dtype=float32)}\n",
      "{'predictions': array([10.796273], dtype=float32)}\n",
      "{'predictions': array([10.79289], dtype=float32)}\n",
      "{'predictions': array([10.794367], dtype=float32)}\n",
      "{'predictions': array([10.794648], dtype=float32)}\n",
      "{'predictions': array([10.792533], dtype=float32)}\n",
      "{'predictions': array([11.068049], dtype=float32)}\n",
      "{'predictions': array([10.791951], dtype=float32)}\n",
      "{'predictions': array([10.996655], dtype=float32)}\n",
      "{'predictions': array([10.795754], dtype=float32)}\n",
      "{'predictions': array([10.793614], dtype=float32)}\n",
      "{'predictions': array([10.792468], dtype=float32)}\n",
      "{'predictions': array([10.792293], dtype=float32)}\n",
      "{'predictions': array([11.137138], dtype=float32)}\n",
      "{'predictions': array([10.774325], dtype=float32)}\n",
      "{'predictions': array([10.794985], dtype=float32)}\n",
      "{'predictions': array([11.068656], dtype=float32)}\n",
      "{'predictions': array([10.793479], dtype=float32)}\n",
      "{'predictions': array([10.793833], dtype=float32)}\n",
      "{'predictions': array([10.77904], dtype=float32)}\n",
      "{'predictions': array([10.79349], dtype=float32)}\n",
      "{'predictions': array([10.793284], dtype=float32)}\n",
      "{'predictions': array([10.862404], dtype=float32)}\n",
      "{'predictions': array([10.793088], dtype=float32)}\n",
      "{'predictions': array([10.792783], dtype=float32)}\n",
      "{'predictions': array([10.79363], dtype=float32)}\n",
      "{'predictions': array([10.794596], dtype=float32)}\n",
      "{'predictions': array([10.860762], dtype=float32)}\n",
      "{'predictions': array([10.931369], dtype=float32)}\n",
      "{'predictions': array([10.792886], dtype=float32)}\n",
      "{'predictions': array([10.793101], dtype=float32)}\n",
      "{'predictions': array([10.772573], dtype=float32)}\n",
      "{'predictions': array([10.790854], dtype=float32)}\n",
      "{'predictions': array([10.793661], dtype=float32)}\n",
      "{'predictions': array([10.79208], dtype=float32)}\n",
      "{'predictions': array([10.792827], dtype=float32)}\n",
      "{'predictions': array([10.861414], dtype=float32)}\n",
      "{'predictions': array([10.861724], dtype=float32)}\n",
      "{'predictions': array([10.792628], dtype=float32)}\n",
      "{'predictions': array([11.0687895], dtype=float32)}\n",
      "{'predictions': array([11.069758], dtype=float32)}\n",
      "{'predictions': array([10.931689], dtype=float32)}\n",
      "{'predictions': array([10.787405], dtype=float32)}\n",
      "{'predictions': array([10.794149], dtype=float32)}\n",
      "{'predictions': array([11.069722], dtype=float32)}\n",
      "{'predictions': array([10.862342], dtype=float32)}\n",
      "{'predictions': array([10.794358], dtype=float32)}\n",
      "{'predictions': array([10.793949], dtype=float32)}\n",
      "{'predictions': array([10.933014], dtype=float32)}\n",
      "{'predictions': array([10.794269], dtype=float32)}\n",
      "{'predictions': array([10.793494], dtype=float32)}\n",
      "{'predictions': array([10.800199], dtype=float32)}\n",
      "{'predictions': array([10.793027], dtype=float32)}\n",
      "{'predictions': array([10.792783], dtype=float32)}\n",
      "{'predictions': array([11.063872], dtype=float32)}\n",
      "{'predictions': array([10.785806], dtype=float32)}\n",
      "{'predictions': array([10.793414], dtype=float32)}\n",
      "{'predictions': array([11.068035], dtype=float32)}\n",
      "{'predictions': array([10.793078], dtype=float32)}\n",
      "{'predictions': array([10.793833], dtype=float32)}\n",
      "{'predictions': array([10.858687], dtype=float32)}\n",
      "{'predictions': array([10.787207], dtype=float32)}\n",
      "{'predictions': array([10.793625], dtype=float32)}\n",
      "{'predictions': array([10.861131], dtype=float32)}\n",
      "{'predictions': array([10.79386], dtype=float32)}\n",
      "{'predictions': array([11.064622], dtype=float32)}\n",
      "{'predictions': array([10.794569], dtype=float32)}\n",
      "{'predictions': array([10.9293165], dtype=float32)}\n",
      "{'predictions': array([11.068538], dtype=float32)}\n",
      "{'predictions': array([11.070415], dtype=float32)}\n",
      "{'predictions': array([10.779492], dtype=float32)}\n",
      "{'predictions': array([10.791143], dtype=float32)}\n",
      "{'predictions': array([10.793862], dtype=float32)}\n",
      "{'predictions': array([10.794976], dtype=float32)}\n",
      "{'predictions': array([11.0675335], dtype=float32)}\n",
      "{'predictions': array([10.794076], dtype=float32)}\n",
      "{'predictions': array([10.790166], dtype=float32)}\n",
      "{'predictions': array([10.79411], dtype=float32)}\n",
      "{'predictions': array([10.794297], dtype=float32)}\n",
      "{'predictions': array([11.000471], dtype=float32)}\n",
      "{'predictions': array([10.793992], dtype=float32)}\n",
      "{'predictions': array([10.863515], dtype=float32)}\n",
      "{'predictions': array([10.859075], dtype=float32)}\n",
      "{'predictions': array([10.793156], dtype=float32)}\n",
      "{'predictions': array([10.79441], dtype=float32)}\n",
      "{'predictions': array([10.793774], dtype=float32)}\n",
      "{'predictions': array([10.862161], dtype=float32)}\n",
      "{'predictions': array([10.79193], dtype=float32)}\n",
      "{'predictions': array([10.79455], dtype=float32)}\n",
      "{'predictions': array([11.136684], dtype=float32)}\n",
      "{'predictions': array([10.79337], dtype=float32)}\n",
      "{'predictions': array([10.792302], dtype=float32)}\n",
      "{'predictions': array([10.792218], dtype=float32)}\n",
      "{'predictions': array([11.137043], dtype=float32)}\n",
      "{'predictions': array([10.79342], dtype=float32)}\n",
      "{'predictions': array([10.853791], dtype=float32)}\n"
     ]
    }
   ],
   "source": [
    "predictions = model.predict(input_fn = make_prediction_input_fn(df_test))\n",
    "for items in predictions:\n",
    "  print(items)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This explains why the RMSE was so high -- the model essentially predicts the same amount for every trip.  Would a more complex model help? Let's try using a deep neural network.  The code to do this is quite straightforward as well."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<h3> Deep Neural Network regression </h3>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "INFO:tensorflow:Using default config.\n",
      "INFO:tensorflow:Using config: {'_experimental_distribute': None, '_session_config': allow_soft_placement: true\n",
      "graph_options {\n",
      "  rewrite_options {\n",
      "    meta_optimizer_iterations: ONE\n",
      "  }\n",
      "}\n",
      ", '_global_id_in_cluster': 0, '_tf_random_seed': None, '_service': None, '_num_ps_replicas': 0, '_evaluation_master': '', '_log_step_count_steps': 100, '_save_checkpoints_steps': None, '_task_id': 0, '_device_fn': None, '_cluster_spec': <tensorflow.python.training.server_lib.ClusterSpec object at 0x7f15d7d567f0>, '_eval_distribute': None, '_keep_checkpoint_max': 5, '_master': '', '_keep_checkpoint_every_n_hours': 10000, '_save_summary_steps': 100, '_protocol': None, '_task_type': 'worker', '_is_chief': True, '_save_checkpoints_secs': 600, '_model_dir': 'taxi_trained', '_num_worker_replicas': 1, '_train_distribute': None}\n",
      "INFO:tensorflow:Calling model_fn.\n",
      "INFO:tensorflow:Done calling model_fn.\n",
      "INFO:tensorflow:Create CheckpointSaverHook.\n",
      "INFO:tensorflow:Graph was finalized.\n",
      "INFO:tensorflow:Running local_init_op.\n",
      "INFO:tensorflow:Done running local_init_op.\n",
      "INFO:tensorflow:Saving checkpoints for 0 into taxi_trained/model.ckpt.\n",
      "INFO:tensorflow:loss = 467570.2, step = 1\n",
      "INFO:tensorflow:global_step/sec: 100.82\n",
      "INFO:tensorflow:loss = 20871.418, step = 101 (0.994 sec)\n",
      "INFO:tensorflow:global_step/sec: 108.186\n",
      "INFO:tensorflow:loss = 19313.43, step = 201 (0.926 sec)\n",
      "INFO:tensorflow:global_step/sec: 112.618\n",
      "INFO:tensorflow:loss = 26053.674, step = 301 (0.890 sec)\n",
      "INFO:tensorflow:global_step/sec: 94.7783\n",
      "INFO:tensorflow:loss = 24630.527, step = 401 (1.054 sec)\n",
      "INFO:tensorflow:global_step/sec: 123.391\n",
      "INFO:tensorflow:loss = 20816.373, step = 501 (0.811 sec)\n",
      "INFO:tensorflow:global_step/sec: 125.027\n",
      "INFO:tensorflow:loss = 19305.867, step = 601 (0.800 sec)\n",
      "INFO:tensorflow:global_step/sec: 100.336\n",
      "INFO:tensorflow:loss = 17916.236, step = 701 (0.997 sec)\n",
      "INFO:tensorflow:global_step/sec: 123.813\n",
      "INFO:tensorflow:loss = 16324.613, step = 801 (0.808 sec)\n",
      "INFO:tensorflow:global_step/sec: 96.5849\n",
      "INFO:tensorflow:loss = 25742.564, step = 901 (1.034 sec)\n",
      "INFO:tensorflow:global_step/sec: 126.786\n",
      "INFO:tensorflow:loss = 20716.746, step = 1001 (0.789 sec)\n",
      "INFO:tensorflow:global_step/sec: 102.184\n",
      "INFO:tensorflow:loss = 17350.438, step = 1101 (0.979 sec)\n",
      "INFO:tensorflow:global_step/sec: 129.286\n",
      "INFO:tensorflow:loss = 23090.242, step = 1201 (0.773 sec)\n",
      "INFO:tensorflow:global_step/sec: 119.124\n",
      "INFO:tensorflow:loss = 14777.045, step = 1301 (0.840 sec)\n",
      "INFO:tensorflow:global_step/sec: 96.1406\n",
      "INFO:tensorflow:loss = 20134.01, step = 1401 (1.040 sec)\n",
      "INFO:tensorflow:global_step/sec: 112.909\n",
      "INFO:tensorflow:loss = 15141.786, step = 1501 (0.882 sec)\n",
      "INFO:tensorflow:global_step/sec: 102.4\n",
      "INFO:tensorflow:loss = 17473.344, step = 1601 (0.980 sec)\n",
      "INFO:tensorflow:global_step/sec: 127.155\n",
      "INFO:tensorflow:loss = 20703.318, step = 1701 (0.787 sec)\n",
      "INFO:tensorflow:global_step/sec: 118.505\n",
      "INFO:tensorflow:loss = 20141.992, step = 1801 (0.844 sec)\n",
      "INFO:tensorflow:global_step/sec: 104.505\n",
      "INFO:tensorflow:loss = 18941.66, step = 1901 (0.957 sec)\n",
      "INFO:tensorflow:global_step/sec: 121.39\n",
      "INFO:tensorflow:loss = 10826.924, step = 2001 (0.820 sec)\n",
      "INFO:tensorflow:global_step/sec: 103.776\n",
      "INFO:tensorflow:loss = 15104.154, step = 2101 (0.967 sec)\n",
      "INFO:tensorflow:global_step/sec: 117.015\n",
      "INFO:tensorflow:loss = 16825.898, step = 2201 (0.855 sec)\n",
      "INFO:tensorflow:global_step/sec: 125.782\n",
      "INFO:tensorflow:loss = 17469.46, step = 2301 (0.794 sec)\n",
      "INFO:tensorflow:global_step/sec: 106.035\n",
      "INFO:tensorflow:loss = 15310.082, step = 2401 (0.944 sec)\n",
      "INFO:tensorflow:global_step/sec: 121.658\n",
      "INFO:tensorflow:loss = 22304.357, step = 2501 (0.818 sec)\n",
      "INFO:tensorflow:global_step/sec: 99.4088\n",
      "INFO:tensorflow:loss = 19509.504, step = 2601 (1.006 sec)\n",
      "INFO:tensorflow:global_step/sec: 114.029\n",
      "INFO:tensorflow:loss = 24601.023, step = 2701 (0.877 sec)\n",
      "INFO:tensorflow:global_step/sec: 55.0054\n",
      "INFO:tensorflow:loss = 21849.145, step = 2801 (1.817 sec)\n",
      "INFO:tensorflow:global_step/sec: 128.72\n",
      "INFO:tensorflow:loss = 11309.27, step = 2901 (0.777 sec)\n",
      "INFO:tensorflow:global_step/sec: 93.5308\n",
      "INFO:tensorflow:loss = 21104.457, step = 3001 (1.069 sec)\n",
      "INFO:tensorflow:global_step/sec: 96.7103\n",
      "INFO:tensorflow:loss = 16993.004, step = 3101 (1.034 sec)\n",
      "INFO:tensorflow:global_step/sec: 91.3205\n",
      "INFO:tensorflow:loss = 18189.752, step = 3201 (1.098 sec)\n",
      "INFO:tensorflow:global_step/sec: 112.614\n",
      "INFO:tensorflow:loss = 14859.451, step = 3301 (0.888 sec)\n",
      "INFO:tensorflow:global_step/sec: 90.5019\n",
      "INFO:tensorflow:loss = 12333.189, step = 3401 (1.105 sec)\n",
      "INFO:tensorflow:global_step/sec: 104.302\n",
      "INFO:tensorflow:loss = 5995.971, step = 3501 (0.959 sec)\n",
      "INFO:tensorflow:global_step/sec: 92.9583\n",
      "INFO:tensorflow:loss = 10282.813, step = 3601 (1.075 sec)\n",
      "INFO:tensorflow:global_step/sec: 104.575\n",
      "INFO:tensorflow:loss = 9950.309, step = 3701 (0.957 sec)\n",
      "INFO:tensorflow:global_step/sec: 88.9567\n",
      "INFO:tensorflow:loss = 16426.35, step = 3801 (1.124 sec)\n",
      "INFO:tensorflow:global_step/sec: 100.309\n",
      "INFO:tensorflow:loss = 22024.291, step = 3901 (0.997 sec)\n",
      "INFO:tensorflow:global_step/sec: 105.657\n",
      "INFO:tensorflow:loss = 14616.185, step = 4001 (0.947 sec)\n",
      "INFO:tensorflow:global_step/sec: 100.456\n",
      "INFO:tensorflow:loss = 13213.275, step = 4101 (0.996 sec)\n",
      "INFO:tensorflow:global_step/sec: 113.571\n",
      "INFO:tensorflow:loss = 12385.185, step = 4201 (0.877 sec)\n",
      "INFO:tensorflow:global_step/sec: 93.7462\n",
      "INFO:tensorflow:loss = 9375.332, step = 4301 (1.067 sec)\n",
      "INFO:tensorflow:global_step/sec: 112.179\n",
      "INFO:tensorflow:loss = 14900.719, step = 4401 (0.894 sec)\n",
      "INFO:tensorflow:global_step/sec: 93.2297\n",
      "INFO:tensorflow:loss = 12472.631, step = 4501 (1.071 sec)\n",
      "INFO:tensorflow:global_step/sec: 106.669\n",
      "INFO:tensorflow:loss = 15485.025, step = 4601 (0.937 sec)\n",
      "INFO:tensorflow:global_step/sec: 92.3307\n",
      "INFO:tensorflow:loss = 18741.918, step = 4701 (1.083 sec)\n",
      "INFO:tensorflow:global_step/sec: 106.823\n",
      "INFO:tensorflow:loss = 13244.169, step = 4801 (0.936 sec)\n",
      "INFO:tensorflow:global_step/sec: 87.4236\n",
      "INFO:tensorflow:loss = 10333.318, step = 4901 (1.147 sec)\n",
      "INFO:tensorflow:global_step/sec: 127.855\n",
      "INFO:tensorflow:loss = 15173.955, step = 5001 (0.782 sec)\n",
      "INFO:tensorflow:global_step/sec: 112.028\n",
      "INFO:tensorflow:loss = 12940.822, step = 5101 (0.890 sec)\n",
      "INFO:tensorflow:global_step/sec: 100.607\n",
      "INFO:tensorflow:loss = 10854.685, step = 5201 (0.997 sec)\n",
      "INFO:tensorflow:global_step/sec: 121.355\n",
      "INFO:tensorflow:loss = 14676.209, step = 5301 (0.822 sec)\n",
      "INFO:tensorflow:global_step/sec: 95.9606\n",
      "INFO:tensorflow:loss = 13156.73, step = 5401 (1.043 sec)\n",
      "INFO:tensorflow:global_step/sec: 118.042\n",
      "INFO:tensorflow:loss = 17359.934, step = 5501 (0.847 sec)\n",
      "INFO:tensorflow:global_step/sec: 109.939\n",
      "INFO:tensorflow:loss = 8592.682, step = 5601 (0.910 sec)\n",
      "INFO:tensorflow:global_step/sec: 104.666\n",
      "INFO:tensorflow:loss = 11916.723, step = 5701 (0.956 sec)\n",
      "INFO:tensorflow:global_step/sec: 110.305\n",
      "INFO:tensorflow:loss = 17452.98, step = 5801 (0.906 sec)\n",
      "INFO:tensorflow:global_step/sec: 91.3437\n",
      "INFO:tensorflow:loss = 20825.383, step = 5901 (1.095 sec)\n",
      "INFO:tensorflow:global_step/sec: 121.12\n",
      "INFO:tensorflow:loss = 4669.6084, step = 6001 (0.825 sec)\n",
      "INFO:tensorflow:Saving checkpoints for 6071 into taxi_trained/model.ckpt.\n",
      "INFO:tensorflow:Loss for final step: 4455.771.\n",
      "INFO:tensorflow:Calling model_fn.\n",
      "INFO:tensorflow:Done calling model_fn.\n",
      "INFO:tensorflow:Starting evaluation at 2019-07-01T20:22:40Z\n",
      "INFO:tensorflow:Graph was finalized.\n",
      "INFO:tensorflow:Restoring parameters from taxi_trained/model.ckpt-6071\n",
      "INFO:tensorflow:Running local_init_op.\n",
      "INFO:tensorflow:Done running local_init_op.\n",
      "INFO:tensorflow:Finished evaluation at 2019-07-01-20:22:41\n",
      "INFO:tensorflow:Saving dict for global step 6071: average_loss = 139.01192, global_step = 6071, label/mean = 11.666427, loss = 16532.488, prediction/mean = 6.1680436\n",
      "INFO:tensorflow:Saving 'checkpoint_path' summary for global step 6071: taxi_trained/model.ckpt-6071\n",
      "RMSE on dataset = 11.790331840515137\n"
     ]
    }
   ],
   "source": [
    "tf.compat.v1.logging.set_verbosity(tf.compat.v1.logging.INFO)\n",
    "shutil.rmtree(OUTDIR, ignore_errors = True) # start fresh each time\n",
    "model = tf.estimator.DNNRegressor(hidden_units = [32, 8, 2],\n",
    "      feature_columns = make_feature_cols(), model_dir = OUTDIR)\n",
    "model.train(input_fn = make_train_input_fn(df_train, num_epochs = 100));\n",
    "print_rmse(model, df_valid)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We are not beating our benchmark with either model ... what's up?  Well, we may be using TensorFlow for Machine Learning, but we are not yet using it well.  That's what the rest of this course is about!\n",
    "\n",
    "But, for the record, let's say we had to choose between the two models. We'd choose the one with the lower validation error. Finally, we'd measure the RMSE on the test data with this chosen model."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<h2> Benchmark dataset </h2>\n",
    "\n",
    "Let's do this on the benchmark dataset."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "from google.cloud import bigquery\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "\n",
    "def create_query(phase, EVERY_N):\n",
    "  \"\"\"\n",
    "  phase: 1 = train 2 = valid\n",
    "  \"\"\"\n",
    "  base_query = \"\"\"\n",
    "SELECT\n",
    "  (tolls_amount + fare_amount) AS fare_amount,\n",
    "  EXTRACT(DAYOFWEEK FROM pickup_datetime) * 1.0 AS dayofweek,\n",
    "  EXTRACT(HOUR FROM pickup_datetime) * 1.0 AS hourofday,\n",
    "  pickup_longitude AS pickuplon,\n",
    "  pickup_latitude AS pickuplat,\n",
    "  dropoff_longitude AS dropofflon,\n",
    "  dropoff_latitude AS dropofflat,\n",
    "  passenger_count*1.0 AS passengers,\n",
    "  CONCAT(CAST(pickup_datetime AS STRING), CAST(pickup_longitude AS STRING), CAST(pickup_latitude AS STRING), CAST(dropoff_latitude AS STRING), CAST(dropoff_longitude AS STRING)) AS key\n",
    "FROM\n",
    "  `nyc-tlc.yellow.trips`\n",
    "WHERE\n",
    "  trip_distance > 0\n",
    "  AND fare_amount >= 2.5\n",
    "  AND pickup_longitude > -78\n",
    "  AND pickup_longitude < -70\n",
    "  AND dropoff_longitude > -78\n",
    "  AND dropoff_longitude < -70\n",
    "  AND pickup_latitude > 37\n",
    "  AND pickup_latitude < 45\n",
    "  AND dropoff_latitude > 37\n",
    "  AND dropoff_latitude < 45\n",
    "  AND passenger_count > 0\n",
    "  \"\"\"\n",
    "\n",
    "  if EVERY_N == None:\n",
    "    if phase < 2:\n",
    "      # Training\n",
    "      query = \"{0} AND ABS(MOD(FARM_FINGERPRINT(CAST(pickup_datetime AS STRING)), 4)) < 2\".format(base_query)\n",
    "    else:\n",
    "      # Validation\n",
    "      query = \"{0} AND ABS(MOD(FARM_FINGERPRINT(CAST(pickup_datetime AS STRING)), 4)) = {1}\".format(base_query, phase)\n",
    "  else:\n",
    "    query = \"{0} AND ABS(MOD(FARM_FINGERPRINT(CAST(pickup_datetime AS STRING)), {1})) = {2}\".format(base_query, EVERY_N, phase)\n",
    "    \n",
    "  return query\n",
    "\n",
    "query = create_query(2, 100000)\n",
    "df = bigquery.Client().query(query).to_dataframe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "INFO:tensorflow:Calling model_fn.\n",
      "INFO:tensorflow:Done calling model_fn.\n",
      "INFO:tensorflow:Starting evaluation at 2019-07-01T20:24:30Z\n",
      "INFO:tensorflow:Graph was finalized.\n",
      "INFO:tensorflow:Restoring parameters from taxi_trained/model.ckpt-6071\n",
      "INFO:tensorflow:Running local_init_op.\n",
      "INFO:tensorflow:Done running local_init_op.\n",
      "INFO:tensorflow:Finished evaluation at 2019-07-01-20:24:31\n",
      "INFO:tensorflow:Saving dict for global step 6071: average_loss = 114.547554, global_step = 6071, label/mean = 11.232336, loss = 14554.199, prediction/mean = 6.168037\n",
      "INFO:tensorflow:Saving 'checkpoint_path' summary for global step 6071: taxi_trained/model.ckpt-6071\n",
      "RMSE on dataset = 9.618778228759766\n"
     ]
    }
   ],
   "source": [
    "print_rmse(model, df)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "RMSE on benchmark dataset is <b>9.61</b> (your results will vary because of random seeds).\n",
    "\n",
    "This is not only way more than our original benchmark of 6.00, but it doesn't even beat our distance-based rule's RMSE of 8.02.\n",
    "\n",
    "Fear not -- you have learned how to write a TensorFlow model, but not to do all the things that you will have to do to your ML model performant. We will do this in the next chapters. In this chapter though, we will get our TensorFlow model ready for these improvements.\n",
    "\n",
    "In a software sense, the rest of the labs in this chapter will be about refactoring the code so that we can improve it."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Challenge Exercise\n",
    "\n",
    "Create a neural network that is capable of finding the volume of a cylinder given the radius of its base (r) and its height (h). Assume that the radius and height of the cylinder are both in the range 0.5 to 2.0. Simulate the necessary training dataset.\n",
    "<p>\n",
    "Hint (highlight to see):\n",
    "<p style='color:white'>\n",
    "The input features will be r and h and the label will be $\\pi r^2 h$\n",
    "Create random values for r and h and compute V.\n",
    "Your dataset will consist of r, h and V.\n",
    "Then, use a DNN regressor.\n",
    "Make sure to generate enough data.\n",
    "</p>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Copyright 2021 Google Inc. Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
